3 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
包裹
choiceofcake = Integer.parseInt(userinput);
嘗試捕捉
try {
choiceofcake = Integer.parseInt(userinput);
if (choiceofcake > 5 || choiceofcake < 1) {
break;
}
} catch (NumberFormatException ee) {
ee.printStatckTrace ();
continue;
}

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
由于您是 Java 新手,因此 try-catch 的想法是在可能發(fā)生異常的情況下包圍一段代碼。在您的情況下,如果“userInput”無法轉(zhuǎn)換為數(shù)字,“parseInt”可能會(huì)引發(fā)異常。可以參考官方文檔發(fā)現(xiàn)哪些異常類型: https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String)
您還可以創(chuàng)建和/或拋出您自己的異常。例如,在這種情況下,您可以在檢查“userInput”是否超出所需值后引發(fā) IllegalArgumentException:
throw new IllegalArgumentException();
您可以在某處捕獲異常,然后顯示帶有警報(bào)的消息對(duì)話框。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
假設(shè)您希望循環(huán)繼續(xù),即使在輸入錯(cuò)誤的情況下,您也可以嘗試以下操作:
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);
如果您希望循環(huán)在輸入錯(cuò)誤時(shí)完全停止,請(qǐng)考慮IllegalArgumentException在發(fā)生這種情況時(shí)拋出一個(gè)。
添加回答
舉報(bào)