为什么语句会在此错误检查代码中不断重复?

时间:2016-11-06 13:47:27

标签: java

我试图阻止某人输入小于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);   
            }

1 个答案:

答案 0 :(得分:2)

  

为什么语句会在此错误检查代码中不断重复?

因为您从不接受新输入并更新setDayTo值,并且因为您使用该不变的值来设置day,如果该值超出范围,则开始使用将永远超出范围。

要么让方法抛出一个异常(可能是最好的,可能没有输出任何东西;这将是调用它的代码的工作),或者让它接受一个新值(尽管如此,这可能是最好的工作)调用它的代码。)