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()メソッドは、入力が有効かどうかに基づいて、trueまたはfalseを返す必要があります。

あなたはそれを呼び出す関数で真と偽のケースを処理することができます。入力を取得するには、入力ダイアログを表示することができます。

String text = JOptionPane.showInputDialog ("Enter New Value"));
于 2012-10-23T14:57:25.357 に答える
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 に答える
1

ユーザーが間違った値を入力すると、メソッドは際限なくループします。メソッドがJOptionPaneが閉じるのを待たない場合、計り知れない量のダイアログポップアップが表示されます。

いずれの場合も、メソッドがブール値を返すようにし、成功した場合は、プログラム内のある種の「状態」、別のブール値、または他の種類の状態変数を変更する必要があります。

そうでない場合は、ユーザーが数値を入力する必要があるポイントに状態を「ループ」させてから、検証プロセスを再開させることができますが、私の意見では、検証プロセスを自分で再開するべきではありません。失敗します。

于 2012-10-23T15:06:54.083 に答える