0

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

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);
4

3 回答 3

2

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

您可以在调用它的函数中处理真假情况。要接受输入,您可能会显示一个输入对话框。

String text = JOptionPane.showInputDialog ("Enter New Value"));
于 2012-10-23T14:57:25.357 回答
1

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

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

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

于 2012-10-23T15:06:54.083 回答
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())
于 2012-10-23T14:59:44.340 回答