2017-06-30 8 views
-4

メジャーに記載されていない文字を置くと無効なメジャーを得ることができましたが、t2を置くと無効なメジャーしか得られません(メジャーは無効です)。コードを検出してどこに間違っているか教えてもらえますか?文字列/事例のプログラミングエラー


// Enter two characters 

    System.out.print("Enter two characters: "); 
    String status = in.next(); 

    char major = Character.toUpperCase(status.charAt(0)); 
    char year = status.charAt(1); 

    String courseName = ""; 
    String yearName = ""; 

    // majors 

    if (major == 'B' || major == 'I' || major == 'C') 
    { 
     switch(major) 
     { 
      case 'B': 
       courseName = "Biology"; break; 
      case 'C': 
       courseName = "Computer Science"; break; 
      case 'I': 
       courseName = "Information Technology"; break; 

      default:System.out.println("Invaild major"); break; 
     } 

     // year 

     switch(year) 
     { 
      case '1': 
       yearName = "Freshman"; break; 
      case '2': 
       yearName = "Sophmore"; break; 
      case '3': 
       yearName = "Junior"; break; 
      case '4': 
       yearName = "Senior"; break; 

      default: System.out.println("Invalid year status"); break; 
     } 

     System.out.printf("%s %s%n", courseName, yearName); 
    } 
    else{ 
     System.out.printf("Invalid input.%n"); 
    } 
} 
} 
+0

ようこそスタックオーバーフロー!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、問題を示す[最小限の、完全で実証可能な例](http://stackoverflow.com/help/mcve)に戻ってください。 –

+4

'(major == 'B' || major == 'I' || major == 'C')'を取り除くと、 'T1'を入力するときに決して' switch'ステートメントを実行しません。 –

+0

私はB5を置くとき、私は無効な年と生物学を得ることができましたが、私がT1を置くときに得られるのは無効な入力です。助けて! – Mia

答えて

1

取り除く:あなたの 'if文は、' 所望の出力を得ることからあなたを妨げている

if (major == 'B' || major == 'I' || major == 'C') 
{ 

else{ 
    System.out.printf("Invalid input.%n"); 
} 

+0

今すぐ理解してください、ありがとう! – Mia

+0

問題ない。 :) –

関連する問題