2016-07-15 13 views
-7

式が& &から||に論理演算子を最初に変更すると、ブール論理がテストされていますが、プログラムが正しく動作していないため、使用する入力以外の最初の文だけが実行されます。誰かがこの行動を説明できますか?なぜ演算子||ここでは働いていないのですか?

((gender != 'M' || gender != 'F') || (age < 0)) 

    public static void main(String[] args) 
    { 
    char gender = 'W'; 
    int age = 0; 
    Scanner scan = new Scanner(System.in); 
    System.out.println("Type gender: "); 
    gender = scan.nextLine().charAt(0); 
    System.out.println("Type age: "); 
    age = scan.nextInt(); 

    if((gender != 'M' && gender != 'F') || (age < 0)) 
    { 
    System.out.println("Error in typed values"); 
    } 
    else if((gender == 'M') && (age < 18)) 
    { 
    System.out.println("Boy"); 
    } 
    else if((gender == 'M') && (age >= 18)) 
    { 
    System.out.println("Man"); 
    } 
    else if((gender == 'F' && age < 18)) 
    { 
    System.out.println("Girl"); 
    } 
    else if((gender == 'F' && age >= 18)) 
    { 
    System.out.println("Woman"); 
    } 
} 
}   
+0

スキャナコード。 –

+0

あなたの状態はどうなると思いますか? – SMA

+0

あなたの 'if'条件は' else if'の使用のために相互に排他的です。したがって、もしあれば1つだけが適用されます。 – Mena

答えて

2

((gender != 'M' || gender != 'F') || (age < 0))genderない Mかない F(それがMであれば、それはMではないFそれがあるならば、それは、Fではない)にすることはできませんので、必ず、trueになります。

0

OR条件の確認は、実際に何かが見つかるとすぐに停止します。この場合、この全体的なステートメントは 'M'と 'F'の両方になることはできないため、常に真です。

関連する問題