Hello Stack溢出社区,
我的提示是: **“您将进行错误检查,以确保输入的小时数在[0,23]范围内。不断询问用户,直到用户输入的有效范围内的时间为止。
当我的程序具有正确的整数输入(实际上是任何int输入)时,它将正常运行。但是,如果我输入非整数,则所有内容都会陷入无限循环。
我在做什么错了?
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");
}
}
}
}
答案 0 :(得分:0)
sc.hasNextInt()
将返回false
。但是,在这种情况下,代码中的任何时候都不会读取此元素。
您应该确保在sc.hasNextInt()
为假时读取并丢弃此元素(在sc.next()
块内添加else
应该可以解决问题)。