我必须编写一个带有单词和2个整数的程序。程序到达文件结束时应该停止。
以下是我的初始代码:
import java.util.*;
public class Test {
public static void main(String[] args) {
String str;
int x, y;
Scanner scan = new Scanner(System.in);
while (!scan.hasNextInt()) {
str = scan.next();
x = scan.nextInt();
y = scan.nextInt();
}
}
}
但我收到了一个错误。我将while条件更改为scan.hasNextLine()
,但它仍然无法正常工作。最后,我将条件更改为scan.hasNext()
,并且它有效。为什么呢?
答案 0 :(得分:1)
如果您阅读Scanner
的{{3}},您会发现:
public boolean hasNext()
如果此扫描仪具有另一个,则返回true 令牌在其输入中。
如果您想使用hasNextLine()
,则需要在每个循环中阅读行,然后解析它到String
和两个 int
,否则您需要检查下一个令牌的可用性,然后阅读它。通过使用上述int
方法,令牌可以是String
或public boolean hasNext()
。
另一方面,hasNextInt()
正在检查是否存在下一个int
而 检查下一个String
因此,while-loop
中的条件逻辑不适合您的程序。