我需要验证用户输入并让用户在java中输入无效

时间:2012-10-23 14:48:49

标签: java validation try-catch

我必须验证用户输入的整数值,并提示用户在输入无效值时重新输入。到目前为止,我已将这种方法放在一起。我相信逻辑是正确的但我需要让用户在错误消息后再次重新输入输入。

void validateItemquantity() {
    boolean error = true;
    while (error) {
        try{ 
            Integer.parseInt(itemQuantityinput.getText());
            error = false; 
        }
        catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Item quantity must be a positive number, please reenter");
            error = true; 
        }
    }
}

来自jframe方法的部分代码:

private void bnPurchaseActionPerformed(java.awt.event.ActionEvent evt) {                                           

        String itemCode; 
        int itemQuantity, itemPrice, itemCost, totalCost ;

        validateItemquantity();
        itemCode = itemCodeinput.getText();
        itemQuantity = Integer.parseInt(itemQuantityinput.getText());
        itemPrice = catalog.searchCatalog(itemCode);
        itemCost = payment.calculateItemcost(itemQuantity,itemPrice);
        totalCost = payment.calculateTotalcost(itemCost);

3 个答案:

答案 0 :(得分:2)

validateItemquantity()方法应根据输入是否有效返回true或false。

您可以在调用它的函数中处理true和false的情况。 要获取输入,您可以显示输入对话框。

String text = JOptionPane.showInputDialog ("Enter New Value"));

答案 1 :(得分:1)

我认为循环应该在调用方法中。

boolean validateItemquantity() {
    try{ 
        Integer.parseInt(itemQuantityinput.getText());
        return true; 
    }
    catch (NumberFormatException e) {
        JOptionPane.showMessageDialog(null, "Item quantity must be a positive number, please reenter");
        error = false; 
    }
}

呼叫部分应该是那样的

while(!validateItemquantity())

答案 2 :(得分:1)

如果用户输入了错误的值,您的方法将无休止地循环。如果该方法不等待JOptionPane关闭,您将面临无法估量的对话框弹出窗口。

你应该让方法在任何情况下都返回一个布尔值,如果成功,你可以在程序中更改某种“状态”,另一种布尔值或其他类型的状态变量。

如果不是,你可以让你的状态“循环”回到用户必须输入数字然后让他重新启动验证过程的程度,但在我看来你不应该重启它的验证过程当它失败时拥有。