用java写代码用scanner函数时遇到多次录入需要用
scanner.nextLine();\删除换行符
这是怎么回事呢?
-
问题背景:
scanner.nextInt()等方法 不会消费换行符,只读取数字或相应的输入。- 而
nextLine()会读取一整行,包括换行符(\n)。
-
问题示例:
System.out.print("Enter a number: ");
int number = scanner.nextInt(); // 输入数字
System.out.print("Enter a string: ");
String str = scanner.nextLine(); // 这里直接跳过输入
System.out.println("Number: " + number);
System.out.println("String: " + str);
如果输入:123 Hello World
输出结果会是:
Number: 123
String:
原因:
nextInt() 只读取数字部分,换行符**(\n) 留在输入流中。
nextLine()读取换行符后立即返回空字符串。
-
解决方法: 在使用
nextLine()前,显式调用一次nextLine()清除缓冲区中的换行符:System.out.print("Enter a number: ");
scanner.nextLine(); // 清除换行符
System.out.print("Enter a string: ");
String str = scanner.nextLine();