Java 为什么input.nextint方法有一个\n作为余项?
在回答这个问题时,我不明白为什么Java 为什么input.nextint方法有一个\n作为余项?,java,io,java.util.scanner,Java,Io,Java.util.scanner,在回答这个问题时,我不明白为什么input.nextInt有一个换行符作为剩余字符 答案很简单: Scanner#nextInt()读取下一个整数,但不读取换行符(ENTER),用户按此键提交整数 要理解这一点,您必须知道键入的所有内容都将写入一个缓冲区,Scanner方法尝试从中读取 举个例子: System.out.println("Enter a number: "); int i = scanner.nextInt(); System.out.println("Enter a line
input.nextInt
有一个换行符作为剩余字符
答案很简单:
Scanner#nextInt()
读取下一个整数,但不读取换行符(ENTER
),用户按此键提交整数
要理解这一点,您必须知道键入的所有内容都将写入一个缓冲区,Scanner
方法尝试从中读取
举个例子:
System.out.println("Enter a number: ");
int i = scanner.nextInt();
System.out.println("Enter a line: ");
String l = scanner.nextLine();
将会发生什么:
- 用户看到
,并将按输入一个数字:
和17
Enter
- 扫描仪将读取
,但保留17
输入的换行符
- 程序将写入
,但扫描仪将读取Enter一行:
的换行,而不是等待输入Enter
nextInt()
不使用换行符,因为可能还有一些其他标记尚未解析,因此假设字符串中没有任何内容,并使用换行符是最不合适的
例如,您将获得以下输入
123\n
调用nextInt()
123\n
再次调用nextInt()
,
\n
为什么在提交input.nextLine时不发生这种情况?nextLine(…)
读取所有输入,直到找到换行符。然后将使用该换行符