黑马程序员技术交流社区
标题:
next与nextLine的区别,求解答
[打印本页]
作者:
549208564
时间:
2015-12-29 13:59
标题:
next与nextLine的区别,求解答
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年龄");
int age=scanner.nextInt();
System.out.println("请输入名字:");
//会什么运行到这里就结束了,如果使用scanner.next()就不会这样
String name = scanner.nextLine();
System.out.println(name);
}
作者:
唱一些温暖
时间:
2015-12-29 15:12
本帖最后由 唱一些温暖 于 2015-12-29 15:21 编辑
next() 每次取到一个间隔符前面的数据 如: 输入 a b c 取值应该是a,因为a后面有空格
nextLine() 每次取一个换行符前面的数据 如:输入 a b c 回车,取值 就是a b c
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年龄");
int age=scanner.nextInt();
//比如输入年龄28,按下回车,其实应该是28\r
//nextInt() 只读了间隔符\r前面的,回车符也算是间隔符。
//nextLine()发现键盘录入的没被读的回车符\r即换行符,读掉了\r,\r前面是空的即""。
//如果这里输入28 张三,即 28空格张三回车,那么name的值就是" 张三",即空格张三。
System.out.println("请输入名字:");
//这里其实应该是打印了""。
String name = scanner.nextLine();
System.out.println(name);
//试验一下。
System.out.println(name.equals(""));
}
作者:
549208564
时间:
2015-12-29 22:54
唱一些温暖 发表于 2015-12-29 15:12
next() 每次取到一个间隔符前面的数据 如: 输入 a b c 取值应该是a,因为a后面有空格
nextLine() 每次取 ...
也就是说,在nextInt读取完后,留下了/r分隔符,当执行到nextLine时,nextLine在底层发现有一个分隔符/r,就直接读取了/r分隔符,也可以理解为,nextLine误认为/r是用户输入的,是这样吗
作者:
longllch
时间:
2015-12-30 12:44
这是因为在int age=scanner.nextInt();你输入整数之后就结束了,你又输入了回车(\r\n换行符),而回车符又被String name = scanner.nextLine()读取到(nextLine()可以读取任意内容),一旦nextLine()读取到\r\n就表示结束了,也就是nextLine()什么都没输出
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2