当我输入正确的值1-99时,我仍然会得到一个例外

时间:2016-01-26 02:40:57

标签: java

public static String getQtyInput(String prompt) throws Exception
{
    String qtyValue;
    int counter = 0;

    do
    {       
        qtyValue = getStringInput(prompt);
        counter++;      
    } while (counter < 3);

    if (Integer.parseInt(qtyValue) > 1 || Integer.parseInt(qtyValue) < 99) 
    {
        throw new Exception("Invalid input! \n Must enter 1-99");
    }

    return qtyValue;
}

2 个答案:

答案 0 :(得分:3)

考虑一下您要检查的内容。 1到99范围内的数字是正确的,因此您只想在数字 该范围时显示异常。换句话说,当它低于(&lt;)而不是一个或高于(&gt;)而不是99时。

因此您需要将if语句重写为:

if (Integer.parseInt(qtyValue) < 1 || Integer.parseInt(qtyValue) > 99) 

答案 1 :(得分:0)

您仍然获得异常的原因实际上取决于您的getStringInput(string)方法在循环的第三次迭代中返回的内容(即,当计数器为2时)。

尝试在循环结束后打印qtyValue的值,您可能会在那里找到一些意外的值,这可能会导致异常。

调试你的代码,或者只是在while-loop之后添加这一行来查看结果:

System.out.println(qtyValue);

如果您要为严格在1到99之间的数字抛出异常,请将您的if条件更改为以下条件:

if (Integer.parseInt(qtyValue) < 1 || Integer.parseInt(qtyValue) > 99)