Java中的nextLine返回意想不到的结果



这段代码没有按预期工作:

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);

我错过了什么?

我猜您的输入类似于"12abc"。

发生的是,在调用nextInt()之后,stdin缓冲区中剩下一个换行符。你对nextLine()的调用消耗了它,你的字符串y包含了"n"。当您打印它时,它看起来是空白的,使您误认为从未调用nextLine()。你认为你应该得到的输入仍然在stdin缓冲区中。

通过两次调用nextLine()并丢弃第一个结果来清除换行符

最新更新