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;
}
答案 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)