黑马程序员技术交流社区

标题: 简略解析 java Scanner中的 next() 方法和 nextLine() 方法 [打印本页]

作者: 明月刀割芳草    时间: 2015-7-25 12:17
标题: 简略解析 java Scanner中的 next() 方法和 nextLine() 方法
  1. import java.util.Scanner;

  2. public class Test {
  3.         public static void main(String[] args) {
  4.        Scanner scan=new Scanner(System.in);
  5.        String s1=scan.next();
  6.        System.out.println("test.next()得到的字符串:"+s1+"长度:"+s1.length());
  7.       
  8.        String s2=scan.nextLine();
  9.        System.out.println("test.nextLine()得到的字符串:"+s2+"长度:"+s2.length());
  10.         }

  11. }
复制代码


结果:
abcd abcd abcd
test.next()得到的字符串:abcd长度:4
test.nextLine()得到的字符串: abcd abcd 长度:11

说明:我输入的是“ abcd abcd abcd ”,前后各加了一个空格
      next 方法遇见第一个有效字符(非空格、换行字符)时,开始执行扫描,而当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描。这里,你看,当我一连串输入三个abcd时,其实next方法只执行到第一个abcd碰到第一个空格就结束了,不会再往下扫描,也就是它只接收了第一个 abcd。而从第一个 abcd后的空格算起,就交给 nextLine 来扫描了,也就是说,nextLine 方法接收当前行剩下的所有的字符串,一直到你敲回车为止。
    所以,Scanner 中的 next 和 nextLine 方法最好不要联合使用,因为它们如果联合使用的话,它们就是一个整体了,不要想当然的以为这两个方法一前一后调用时是各自孤立的。也就是说,在这里,next 方法和nextLine 方法(next 在前,nextLine 在后)扫描接收的是同一行上的字符串,只不过接收的是不同部分罢了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2