我试图阻止某人输入小于0且大于31的日期数字。它陷入无限循环。
public void setDay(int setDayTo) throws IllegalArgumentException
{
do
{
if(setDayTo <= 0 || setDayTo >31)
{
System.out.println("Day is not in range from 1 to 31, please" + " " +
"re-enter the date:");
}
// No Exception thrown
day = setDayTo;
}while(day <= 0 || day > 31);
}
答案 0 :(得分:2)
为什么语句会在此错误检查代码中不断重复?
因为您从不接受新输入并更新setDayTo
值,并且因为您使用该不变的值来设置day
,如果该值超出范围,则开始使用将永远超出范围。
要么让方法抛出一个异常(可能是最好的,可能没有输出任何东西;这将是调用它的代码的工作),或者让它接受一个新值(尽管如此,这可能是最好的工作)调用它的代码。)