2016-10-26 14 views
1
System.out.println("Enter the answers pressing enter after every input : "); 
    for(int x = 0; x < 20; x++) { 
     do { 
      studentAnswers[x] = keyboard.next().toUpperCase(); 
      System.out.println(studentAnswers[x]); 
      if (!"A".equals(studentAnswers[x]) || !"B".equals(studentAnswers[x]) || 
       !"C".equals(studentAnswers[x]) || !"D".equals(studentAnswers[x])) 
       System.out.println("You entered an invalid input."); 
     } while(!"A".equals(studentAnswers[x]) || !"B".equals(studentAnswers[x]) || 
       !"C".equals(studentAnswers[x]) || !"D".equals(studentAnswers[x])); 
    } 

上記は私のコードです。何らかの理由で、if文とdo-whileループの両方の条件が正しい入力を認識していません。たとえば、私がaを入力すると、「あなたは無効な入力を入力しました」と表示されます。私は先生にこれを見させることさえあった。残念ながら、彼は答えも見つけられませんでした。 studentAnswers配列は文字列であり、入力が正しく格納されていることを確認するために、入力の下に行があることさえあります。Java If文のロジック

私はこの問題を解決するための助けに感謝します。前もって感謝します!

答えて

5

|| & &が入力されていると判断するためには、すべての条件が真である必要があります。 || 1つの条件だけが必要であり、条件文によって常に真となります。

+1

"a" .equals( "A")は偽です – baao

+0

toUpperCaseはその@baaoを修正する必要があります – briansrls

+1

@briansrlsありがとう - それは – baao