3 回答
TA贡献1818条经验 获得超11个赞
包裹
choiceofcake = Integer.parseInt(userinput);
尝试捕捉
try {
choiceofcake = Integer.parseInt(userinput);
if (choiceofcake > 5 || choiceofcake < 1) {
break;
}
} catch (NumberFormatException ee) {
ee.printStatckTrace ();
continue;
}
TA贡献1829条经验 获得超4个赞
由于您是 Java 新手,因此 try-catch 的想法是在可能发生异常的情况下包围一段代码。在您的情况下,如果“userInput”无法转换为数字,“parseInt”可能会引发异常。可以参考官方文档发现哪些异常类型: https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String)
您还可以创建和/或抛出您自己的异常。例如,在这种情况下,您可以在检查“userInput”是否超出所需值后引发 IllegalArgumentException:
throw new IllegalArgumentException();
您可以在某处捕获异常,然后显示带有警报的消息对话框。
TA贡献1802条经验 获得超6个赞
假设您希望循环继续,即使在输入错误的情况下,您也可以尝试以下操作:
do {
String userinput = JOptionPane.showInputDialog(null, "Enter your choice of cake:" +
"\n" + "1." + Cakes[0].getflavorofcake() + "(" + Cakes[0].getpriceofcake() + "cents" + ")" + " no. of cakes available:" + Cakes[0].getnofcaksleft() +
"\n" + "2." + Cakes[1].getflavorofcake() + "(" + Cakes[1].getpriceofcake() + "cents" + ")" + " no. of cakes available:" + Cakes[1].getnofcaksleft() +
"\n" + "3." + Cakes[2].getflavorofcake() + "(" + Cakes[2].getpriceofcake() + "cents" + ")" + " no. of cakes available:" + Cakes[2].getnofcaksleft() +
"\n" + "4." + Cakes[3].getflavorofcake() + "(" + Cakes[3].getpriceofcake() + "cents" + ")" + " no. of cakes available:" + Cakes[3].getnofcaksleft() +
"\n" + "5." + Cakes[4].getflavorofcake() + "(" + Cakes[4].getpriceofcake() + "cents" + ")" + " no. of cakes available:" + Cakes[4].getnofcaksleft(), "mini cake shop", JOptionPane.QUESTION_MESSAGE);
choiceofcake = Integer.parseInt(userinput);
if (choiceofcake > 5 || choiceofcake < 1) {
JOptionPane.showMessageDialog(null, "Invalid input! Please enter in the range from 1 to 5", "Error", JOptionPane.ERROR_MESSAGE);
}
else {
showthatthereisnocakesleft(choiceofcake);
}
} while (Cakes[choiceofcake - 1].getnofcaksleft() < 1);
如果您希望循环在输入错误时完全停止,请考虑IllegalArgumentException在发生这种情况时抛出一个。
添加回答
举报
