尽管有终止表达式,java循环仍不会结束
你好Stack overflow社区
我的提示是: **“您将进行错误检查,以确保输入的小时在[0,23]范围内。请继续询问用户,直到用户输入的时间在有效范围内。”
当我的程序有正确的整数输入(任何整数输入)时,它将正常工作。然而,如果我输入一个非整数,那么所有的东西都卡在一个无限循环中
我做错了什么
import java.util.*;
public class Tester2 {
int a; // any valid int number
public void loop()
{
Scanner sc = new Scanner(System.in);
int x=0; // terminating int
while(x==0)
{
System.out.println("Enter 0-23: ");
try
{
if(sc.hasNextInt())
{
a=sc.nextInt();
if((a>=0&&a<=23))
{
System.out.println("Success! ");
x=1;
}
else
{
System.out.println("Retry! ");
a=0;
x=0;
}
}
}
catch (NumberFormatException ex)
{
System.out.println("invalid input");
}
}
}
}
# 1 楼答案
如果要读取的下一个元素不是有效的整数,
sc.hasNextInt()
将返回false
。但是,在这种情况下,代码中的任何一点都不会读取该元素当
sc.hasNextInt()
为false时,您应该确保读取并丢弃该元素(在else
块中添加sc.next()
就可以了)