public class Next_And_NextLine {
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("代码1");
code1();
System.out.println("==========================================");
System.out.println("代码2");
code2();
}
public static void code1(){
String string = scanner.next();
System.out.println(string);
string = scanner.nextLine();
System.out.println(string);
}
public static void code2(){
String string = scanner.nextLine();
System.out.println(string);
string = scanner.next();
System.out.println(string);
}
}
下图是执行过程
看过工作原理后,来仔细了解一下这个过程
执行code1() 时,当遇到next()函数时,程序等待用户的输入,在上图中只看到输入了abc,但是在缓冲区中会出现换行符,因此,缓冲区中的数据是abc和换行符,有因为next()的工作原理,将abc读取后,在缓冲区中留下了换行符,下次读取的起点定位到abc之后换行符之前,当紧接着使用nextLine()函数时,它会自动读取换行符,函数结束,不会等待用户的输入
先使用nextLine()时,该函数会将缓冲区中扫描过的字符包括空白符都返回,接下来使用next()函数时,就会等待用户的输入
因篇幅问题不能全部显示,请点此查看更多更全内容