scanner.next()与scanner.nextLine()的区别
2018-03-04 10:21
459 查看
1.next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
2.同样对于nextInt()、nextDouble()等和next一样一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
3.所以如果next()或者nextInt()等下面有nextLine()时,中间要再加一句nextLine()用来接收next()或者nextInt()等过滤的回车、tab、空格。这样才能让下面的nextLine()生效,否则它就接收了enter、tab、空格等,导致用户没有输入就结束了。
//众所周知,在Java中输入字符串有两种方法,就是next()和nextLine(),今天研究了一下其中的区别。首先,nextLine()的输入是碰到回车就终止输入,而next()方法是碰到空格,回车,Tab键都会被视为终止符。所以next()不会得到带空格的字符串,而nextLine()可以得到带空格的字符串。例如:
[java] view plain copyScanner scanner = new Scanner(new BufferedInputStream(System.in));
String s = scanner.next();
你输入“bonnie ukfire”,s中只会存储“bonnie”。如果用nextLine():[java] view plain copyScanner scanner = new Scanner(new BufferedInputStream(System.in));
String s = scanner.nextLine();
输入“bonnie ukfire”,即使中间有空格,s中也会把空格一并存入“bonnie ukfire”。
如果在next()方法后紧跟nextLine()方法,nextLine()方法会吃掉next()的回车符,造成第二个字符串接受了回车符,所以通常在next()等方法后加上一个[java] view plain copyscanner.nextLine();
来吞掉回车符,如next(),nextInt(),nextFloat(),nextDouble()等。
2.同样对于nextInt()、nextDouble()等和next一样一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
3.所以如果next()或者nextInt()等下面有nextLine()时,中间要再加一句nextLine()用来接收next()或者nextInt()等过滤的回车、tab、空格。这样才能让下面的nextLine()生效,否则它就接收了enter、tab、空格等,导致用户没有输入就结束了。
//众所周知,在Java中输入字符串有两种方法,就是next()和nextLine(),今天研究了一下其中的区别。首先,nextLine()的输入是碰到回车就终止输入,而next()方法是碰到空格,回车,Tab键都会被视为终止符。所以next()不会得到带空格的字符串,而nextLine()可以得到带空格的字符串。例如:
[java] view plain copyScanner scanner = new Scanner(new BufferedInputStream(System.in));
String s = scanner.next();
你输入“bonnie ukfire”,s中只会存储“bonnie”。如果用nextLine():[java] view plain copyScanner scanner = new Scanner(new BufferedInputStream(System.in));
String s = scanner.nextLine();
输入“bonnie ukfire”,即使中间有空格,s中也会把空格一并存入“bonnie ukfire”。
如果在next()方法后紧跟nextLine()方法,nextLine()方法会吃掉next()的回车符,造成第二个字符串接受了回车符,所以通常在next()等方法后加上一个[java] view plain copyscanner.nextLine();
来吞掉回车符,如next(),nextInt(),nextFloat(),nextDouble()等。
相关文章推荐
- java Scanner nextLine next 连用的区别
- java scanner next nextline nextint区别
- Java中Scanner的nextLine()与next()的区别
- Scanner对象的next()与nextLine()区别
- Java基础之Scanner类中next()与nextLine()方法的区别
- Scanner中的next()与nextLine()的区别
- Java中Scanner的next()与nextLine()的区别
- 关于Scanner键盘接收方法中scan.nextLine()和scan.nextInt()的区别
- Scanner中的next()与nextLine()的区别
- java中Scanner的nextLine()和next()的区别
- Scanner对象的next()与nextLine()区别(转)
- 控制台输入字符串next()与nextLine()的区别
- Scanner 类中的 next() 与 nextLine() 区别
- 键盘录入 Scanner类 nextInt() nextInt() nextLine() 有什么区别
- scanner 中的next() 和nextline()区别
- next()nextLine()以及nextInt()的区别及用法
- 对于 scanner输入流中next() nextline()的认识
- Java的next() nextLine()的区别
- next()与nextLine()区别
- Java中Scanner的next()和nextLine()区别