2

E が入力されたときに連続してコインを投げて終了できるように、次のコードを記述しようとしていました。do-while ループが継続的に実行する正しい方法であるかどうか、または別の方法を使用する必要があるかどうかはわかりません。

do {
    guess = sc.next();
    tossGenerator(guess);
    }while(!guess.equals("E")||!guess.equals("e"));

do ループから抜け出せないか、別の方法を使用する必要があるため、コードの言い回しが間違っているのでしょうか。助けてください。ありがとう。

4

4 に答える 4

8

&&に変更||:

} while (!guess.equals("E") && !guess.equals("e"));

または、次のように並べ替えます。

} while (!(guess.equals("E") || guess.equals("e")));

または、接続詞を使用String.equalsIgnoreCase()して削除することもできます。

} while (!guess.equalsIgnoreCase("e"));
于 2012-11-21T17:15:10.277 に答える
3

に変更します

while(!guess.equalsIgnoreCase("E") );
于 2012-11-21T17:16:04.223 に答える
2

終了条件は AND 演算子を使用する必要があります。

!guess.equals("E") && !guess.equals("e")

それ以外の場合は、「e」の場合は「E」ではなく、その逆であるため、それらの少なくとも 1 つが自明に true になります"E""e"

于 2012-11-21T17:15:42.617 に答える
1

コードの問題の 1 つは、 "e" のtossGenerator(guess)場合でも呼び出されることです。guessもう1つは、guess常に「e」または「E」ではないことです(同時に両方になることはできません)。私は次のように書きます:

guess = sc.next();
while (!"e".equalsIgnoreCase(guess)) {
    tossGenerator(guess);
    guess = sc.next();
}

forまたは、ループを使用します。

for (guess = sc.next(); !"e".equalsIgnoreCase(guess); guess = sc.next()) {
    tossGenerator(guess);
}
于 2012-11-21T17:17:06.343 に答える