-1

此代码无法按预期工作:

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

我错过了什么?

4

1 回答 1

1

我猜你的输入类似于“12<Return>abc”。

发生的情况是,在调用 之后nextInt(),stdin 缓冲区中留下了一个换行符。您的调用会nextLine()消耗它,并且您的 Stringy包含"\n". 当你打印它时,它看起来是空白的,让你误以为nextLine()从未被调用过。您认为应该获得的输入仍保留在标准输入缓冲区中。

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

于 2013-05-28T00:48:30.573 回答