0

このループは、有効な入力を入力してもエラー メッセージを表示し続け、何が問題なのかわかりません。これは、すべて正常に動作するプログラム内の他のループと同じです。誰も問題を知っていますか?ループは次のとおりです。

System.out.println("Male or Female (M/F)");
    gender = userInput.next().charAt(0);
    gender = Character.toLowerCase(gender);

    while((gender != 'm') || (gender != 'f')) {
        System.out.println("ERROR Please enter a valid age");
        System.out.println("Male or Female (M/F)");
        gender = userInput.next().charAt(0);
        gender = Character.toLowerCase(gender);
    }//end while

「m」または「f」と入力すると、エラーメッセージが表示されますか? ??? ???

4

1 に答える 1

6
while((gender != 'm') || (gender != 'f')) {

本当にあるべき

while((gender != 'm') && (gender != 'f')) {

条件(gender != 'm') || (gender != 'f')は常に と評価されtrueます。その理由を理解するために、あるケースを考えてみましょう - gender = 'm'...

(gender != 'm') || (gender != 'f')
('m'    != 'm') || ('m'    != 'f')
false           || true
true

基本的に、Java は一般的な英語のイディオムを知りませんif gender isn't (either) male or female

于 2013-09-10T15:01:05.607 に答える