Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
此代码无法按预期工作:
int x=in.nextInt(); String y=in.nextLine(); System.out.println(y);
但是程序在获得 x 的值后终止。
但是,如果我写这个,那么它可以工作:
String y=in.nextLine(); int x=in.nextInt(); System.out.println(y);
我错过了什么?
我猜你的输入类似于“12<Return>abc”。
发生的情况是,在调用 之后nextInt(),stdin 缓冲区中留下了一个换行符。您的调用会nextLine()消耗它,并且您的 Stringy包含"\n". 当你打印它时,它看起来是空白的,让你误以为nextLine()从未被调用过。您认为应该获得的输入仍保留在标准输入缓冲区中。
nextInt()
nextLine()
y
"\n"
nextLine()通过调用两次并丢弃第一个结果来清除换行符。