我在这个程序中遇到一个又一个错误。在这一点上,大部分事情似乎都是有序的,我可以正确地编译,但是当我运行程序时,当我被要求输入一个字母等级时,输入任何字母等级都会得到这样的结果:
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)非常感谢您的帮助..请原谅我的傲慢,我是一个全新的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);
}
}发布于 2013-07-15 04:16:08
char letterGrade =(char) kbReader.next().toCharArray()[0];我想这会对你有帮助的。
发布于 2013-07-15 04:02:25
当您声明letterGrade时,您就是将其声明为一个整数,并读取一个整数
int letterGrade = kbReader.nextInt();但是在您的交换机中使用了一个字符
`case 'A':应为case 1:或任何其他整型。
https://stackoverflow.com/questions/17643017
复制相似问题