此代码无法正常工作:
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);
我错过了什么?
答案 0 :(得分:1)
我猜你的输入是“12< Return> abc”。
在调用nextInt()
之后,stdin缓冲区中还有一个换行符。您拨打nextLine()
的电话会消耗它,而您的字符串y
包含"\n"
。打印时,它看起来是空白的,让您误以为nextLine()
从未被调用过。你认为应该得到的输入仍然存在于stdin缓冲区中。
通过调用nextLine()
两次并丢弃第一个结果来清除换行符。