这段代码没有按预期工作:
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
发生的是,在调用nextInt()
之后,stdin缓冲区中剩下一个换行符。你对nextLine()
的调用消耗了它,你的字符串y
包含了"n"
。当您打印它时,它看起来是空白的,使您误认为从未调用nextLine()
。你认为你应该得到的输入仍然在stdin缓冲区中。
通过两次调用nextLine()
并丢弃第一个结果来清除换行符