我正在尝试从用户不断读取输入,直到用户输入quit。我只是输入'quit'来测试它,但是console.hasNext()似乎没有返回false。事实上,似乎该程序在第7行(hasNext()行)被阻止。有什么想法吗?
boolean bool = true;
while (bool) {
System.out.println("Type 'quit':");
Scanner console = new Scanner(System.in);
if (console.next().equals("quit")) {
System.out.println("You typed quit");
System.out.println("check: " + console.hasNext()); // This line doesnt print
bool = false;
}
}
答案 0 :(得分:11)
如果您的Scanner
被声明为System.in
,则会询问System.in
是否有下一个要接收的值。然后in
类将等待用户输入内容,然后返回true。
为文件之类的内容保留hasNext()
,其中输入大小是固定的。这样,当Scanner
查询文件时,它有一个明确的hasNext()
。
相反,我建议将下一个值作为String抓取,然后检查它是否与整数格式匹配。如果是,则将其转换,否则,按照您的喜好处理它。