1

無効なエントリを使用した場合にユーザーにデータの再入力を促す while ループを作成しようとしています。私のプログラムでは、ユーザーに数字 (0-3) を入力するように求めているので、それ以外のものを入力するとエラー メッセージが表示され、データを再入力するように求められます。ループで何が間違っているのかわかりません。何を入力しても、常にエラーメッセージが表示されます。

String itemChoice = JOptionPane.showInputDialog(null, itemList);
    itemChoiceNum = Integer.parseInt(itemChoice);

    //test to make sure the input is valid
    while (itemChoiceNum != 0 || itemChoiceNum != 1 || itemChoiceNum != 2 || itemChoiceNum != 3) {
        JOptionPane.showMessageDialog(null, "Sorry that's not a valid choice. Please start again.");
        itemChoice = JOptionPane.showInputDialog(null, itemList);
    }

NumberFormatException

    while (itemChoiceNum != 0 && itemChoiceNum != 1 && itemChoiceNum != 2 && itemChoiceNum != 3) {
        try {
            JOptionPane.showMessageDialog(null, "Sorry that's not a valid choice. Please start again.");
                                        itemChoice = JOptionPane.showInputDialog(null, itemList);
                                        itemChoiceNum = Integer.parseInt(itemChoice);
        }

        catch (NumberFormatException itemChoiceNum ) {
            JOptionPane.showMessageDialog(null, "Sorry that's not a valid choice. Please start again.");
        }

エラー

Exception in thread "main" java.lang.NumberFormatException: For input string: "f"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at VendingClass.displayVend(VendingClass.java:82)
    at VendingMachineDemo.main(VendingMachineDemo.java:12)
4

2 に答える 2

6

あなたの論理は正しくありません。選択肢が 0 でないか、1 でない、2 でないかは常に true です。&&演算子で「and」が必要です。

while (itemChoiceNum != 0 && itemChoiceNum != 1 && itemChoiceNum != 2 && itemChoiceNum != 4) {
于 2013-05-07T19:50:02.740 に答える