我想了解爲什麼validateItemquantity方法最終會崩潰,出現NumberFormatException
錯誤。邏輯似乎是正確的,但有些不對。它假設一直要求用戶重新輸入,直到它獲得有效輸入,然後返回該有效輸入。在java中調用自身的驗證方法
String validateItemquantity(String itemQuantity) {
try{
Integer.parseInt(itemQuantity);
}
catch (NumberFormatException e) {
itemQuantity = JOptionPane.showInputDialog
("Invalid item quantiy, please enter a new Value");
validateItemquantity(itemQuantity);
}
return itemQuantity ;
方法調用它:
private void bnPurchaseActionPerformed(java.awt.event.ActionEvent evt) {
String itemCode, validItemquantity ;
int itemQuantity, itemPrice, itemCost, totalCost ;
validItemquantity = validateItemquantity(itemQuantityinput.getText());
itemQuantity = Integer.parseInt(validItemquantity);
itemCode = itemCodeinput.getText();
itemPrice = catalog.searchCatalog(itemCode);
itemCost = payment.calculateItemcost(itemQuantity,itemPrice);
totalCost = payment.calculateTotalcost(itemCost);
看來validItemquantity要麼是null(或)String,這會導致NumberFormatException。 – kosa
嘗試'Integer.parseInt(itemQuantity.trim())'; –
這不是循環輸入的正確方法。使用帶有條件中斷的while(true)循環。 (這可能是也可能不是引起你的異常的問題,但它是*問題。) – jrajav