1

このプログラムでエラーが発生しました。この時点で、大部分は問題ないように見え、エラーなしでコンパイルできますが、プログラムを実行してレター グレードを入力するように求められた場合、レター グレードを入力すると次のようになります。

    Exception in thread "main" java.util.InputMisMatchException
        at java.util.Scanner.throwFor(Unknown Source)
        at java.util.Scanner.next(Unknown Source)
        at java.util.Scanner.nextInt(Unknown Source)
        at java.util.Scanner.nextInt(Unknown Source)
        at GPA.main(GPA.java:28)

どんな助けでも大歓迎です..私の初心者を許してください、私は(プログラミングの3日目で)Javaにまったく慣れていませんが、非常に決心しています。

java.util.Scanner をインポートします。パブリッククラスGPA

{
  public static void main(String[] args)
   {

    Scanner kbReader = new Scanner(System.in);

    System.out.println("Enter number of classes: ");
    int numberClasses = kbReader.nextInt();

    int i;
    int totalCreditForGPA = 0;
    int totalCreditHours = 0;

      for (i = 0; i < numberClasses; i++)
      {

      System.out.print("Enter letter grade of class: ");
      int letterGrade = kbReader.nextInt();

      System.out.print("Enter credit hour of class: ");
      int creditHour = kbReader.nextInt();

    switch (letterGrade)
        {
       case 'A':
       case 'a': totalCreditForGPA = (int) totalCreditForGPA + (creditHour * 4);
             totalCreditHours =  totalCreditHours + creditHour;
             break;
      case 'B':
      case 'b':  totalCreditForGPA = (int) totalCreditForGPA + (creditHour * 3);
             totalCreditHours =  totalCreditHours + creditHour;
             break;
      case 'C':
      case 'c':  totalCreditForGPA = (int) totalCreditForGPA + (creditHour * 2);
             totalCreditHours =  totalCreditHours + creditHour;
             break;
      case 'D':
      case 'd':  totalCreditForGPA = (int) totalCreditForGPA + (creditHour * 1);
             totalCreditHours =  totalCreditHours + creditHour;
             break;
      case 'F':
      case 'f':  totalCreditForGPA = (int) totalCreditForGPA + (creditHour * 0);
             totalCreditHours =  totalCreditHours + creditHour;
             break;
      default:
             System.out.println("Invalid letter grade.");
        }
      }
    int GPA = totalCreditForGPA;
    System.out.println("Your GPA is " + GPA);
   }
}
4

2 に答える 2

0
char letterGrade =(char) kbReader.next().toCharArray()[0];

これが役立つと思います。

于 2013-07-14T20:16:07.983 に答える
0

letterGrade を宣言するときは、それを int として宣言し、int を読み取っています。

int letterGrade = kbReader.nextInt();

しかし、スイッチではcharを使用します

`case 'A':

case 1:またはその他の intである必要があります。

于 2013-07-14T20:02:24.660 に答える