首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Switch语句错误

Switch语句错误
EN

Stack Overflow用户
提问于 2013-07-15 03:41:24
回答 2查看 1.3K关注 0票数 1

我在这个程序中遇到一个又一个错误。在这一点上,大部分事情似乎都是有序的,我可以正确地编译,但是当我运行程序时,当我被要求输入一个字母等级时,输入任何字母等级都会得到这样的结果:

代码语言:javascript
复制
    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

代码语言:javascript
复制
{
  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);
   }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-15 04:16:08

代码语言:javascript
复制
char letterGrade =(char) kbReader.next().toCharArray()[0];

我想这会对你有帮助的。

票数 0
EN

Stack Overflow用户

发布于 2013-07-15 04:02:25

当您声明letterGrade时,您就是将其声明为一个整数,并读取一个整数

代码语言:javascript
复制
int letterGrade = kbReader.nextInt();

但是在您的交换机中使用了一个字符

代码语言:javascript
复制
`case 'A':

应为case 1:或任何其他整型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17643017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档