-1

入力に何も入力しないか、キャンセルを押すと、ループから抜け出せないようです。抜け道はありますか?

    While (last == '?'){
        input = (int)(Math.random()*2); 
        if (number == 1){
            answer = "Nice";
        }
        if (number == 2){
            answer = "Okay";
        }
        System.out.println("The answer: " + answer);
        input = JOptionPane.showInputDialog(null, "Ask a question. (Remember the?)");
        if (input != null && input.length() > 0){
            last = input.charAt(input.length() - 1);
        }
    }
4

2 に答える 2

0

lastループの外で初期化する必要がありますが、何も入力しないか、最後の if ステートメントをキャンセルすると、false と評価されるためlast、新しい値に設定されないため、ループを続ける前の値を使用し続けます。

last最後の if ステートメントを評価する前に、null または空の文字列にリセットする必要があります。

于 2012-10-14T01:58:08.710 に答える
0

問題は、「ループを破る」条件 ( ) がに評価されたときにif input != null && input.length() > 0のみ新しい値を割り当てることですが、何も入力しないと false と評価され、 の値が変更されないことを意味します。lasttruelast

if ブロックの最後に以下を追加すると、問題が解決する可能性があります。

else {
    break;
}

さらに、疑問符で終わらない何かを入力すると、ループが壊れるはずです。

于 2012-10-14T02:00:03.323 に答える