2016-09-12 10 views
0

プログラミングが新しく、Javaを開始しました。 !=オペランドをcharで処理することができません。正しい入力が配置されているにも関わらずwhileループに関してはこれがあります。ループは、正しい入力が行われているにもかかわらず、無効な入力であると言っています。'等しくない'オペランドを文字で認識できません

入力が正しく認識され、大文字に変換されます。しかし、whileループは機能しません。どんな提案もありがとう!

Scanner keyboard = new Scanner(System.in); //Create object to read user data 

    System.out.println("Please enter your age between 1 - 110"); 
    age = keyboard.nextInt(); 
    while((age < 1) || (age > 110)){ 
     System.out.println("Error please input a valid age"); 
     System.out.println(""); 
     System.out.println("Please enter your age between 1 - 110"); 
     age = keyboard.nextInt(); 
    } 

    System.out.println("Please enter this person's gender (M/F)"); 
    gender = keyboard.next().charAt(0); 
    gender = Character.toUpperCase(gender); // Convert all inputted character to upper case 

    while((gender != 'M') || (gender != 'F')){ 
     System.out.println("Error please input a valid gender"); 
     System.out.println(""); 
     System.out.println("Please enter this person's gender (M/F)"); 
     gender = keyboard.next().charAt(0); 
     gender = Character.toUpperCase(gender); // Convert all inputted character to upper case 
    } 


    System.out.println("Please enter whether this person watches the show regularly (Y/N"); 
    show = keyboard.next().charAt(0); 
    show = Character.toUpperCase(show); // Convert show to upper case 


    while((show != 'Y') || (show != 'N')){ 
     System.out.println("Error - input invalid"); 
     System.out.println(""); 
     System.out.println("Please enter whether this person watches the show regularly (Y/N"); 
     show = keyboard.next().charAt(0); 
     show = Character.toUpperCase(show); // Convert show to upper case 
    } 

    System.out.println("Do you want to enter another person's details (Y/N)?"); 
    details = keyboard.next().charAt(0); 
    details = Character.toUpperCase(details); 

    while((details != 'Y') || (details != 'N')){ 
     System.out.println("Error - Invalid input"); 
     System.out.println(""); 
     System.out.println("Do you want to enter another person's details (Y/N)?"); 
     details = keyboard.next().charAt(0); 
     details = Character.toUpperCase(details); 
    } 
+4

'((性別= 'M')&&(性別= 'F')が!)'であることを – Eran

+0

ありありながら、私たちがここで指し示すことができる標準的な複製。 –

+0

'(gender!= 'M')について|| (gender!= 'F') '論理的に1分間:「性別がMでないか、性別がFでない場合」 'ジェンダー'は '' M ''と '' F ''を同時に使うことはできないので、常に**真実です。 –

答えて

0

性別MFまたは他のための3可能性があります。任意の性別のansverは常にTrue

+0

ありがとうございます。それは理にかなっている! – mandok

0

条件(gender != 'M') || (gender != 'F')が偽になることはありませんでしょうのためにそれら

| Gender | gender != 'M' | gender != 'F'| (gender != 'M') || (gender != 'F') | 
| 'M' | False   | True   | True        | 
| 'F' | True   | False  | True        | 
| Other | True   | True   | True        | 

を見てみましょうそれは意味します。 gender'M'の場合、gender != 'F'が真となり、OR条件が満たされます。 gender'F'の場合、gender != 'M'が真となり、OR条件が満たされます。

あなたは&&をしたい(AND)、ない||(OR):

while (gender != 'M' && gender != 'F') { 
    // ... 
} 
+0

ありがとうございました ! – mandok

関連する問題