Java中的nextLine返回意外结果

时间:2013-05-28 00:36:47

标签: java file io

此代码无法正常工作:

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

我错过了什么?

1 个答案:

答案 0 :(得分:1)

我猜你的输入是“12< Return> abc”。

在调用nextInt()之后,stdin缓冲区中还有一个换行符。您拨打nextLine()的电话会消耗它,而您的字符串y包含"\n"。打印时,它看起来是空白的,让您误以为nextLine()从未被调用过。你认为应该得到的输入仍然存在于stdin缓冲区中。

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