当前位置: 首页 > 知识库问答 >
问题:

使用开关外壳时出现不兼容类型错误

李联
2023-03-14

嗨,我正在制作一个程序,该程序应该采用字母等级并将其转换为 GPA 值。程序的第一部分取了一个百分比并将其转换为字母等级,现在我正在尝试将转换后的字母等级转换为 int 值。我们只允许使用开关盒。但是,在执行此操作时,我发现一个不兼容的类型错误:java.lang.String required: int。不确定我需要更改什么,有什么帮助吗?

谢谢。

  public static int convertToGradePoint(String letterGrade) {

  int gradepoint;

   switch (letterGrade) {

   case "A+" :
   gradepoint = 12;
   break;

   case "A" :
   gradepoint = 11;
   break;

   case "A-" :
   gradepoint = 10;
   break;

   case "B+" :
   gradepoint = 9;
   break;

   case "B" :
   gradepoint = 8;
   break;

   case "B-" :
   gradepoint = 7;
   break;

   case "C+" :
   gradepoint = 6;
   break;

   case "C" :
   gradepoint = 5;
   break;

   case "C-" :
   gradepoint = 4;
   break;

   case "D+" :
   gradepoint = 3;
   break;

   case "D" :
   gradepoint = 2;
   break;

   case "D-" :
   gradepoint = 1;
   break;

   default :
   gradepoint = 0;
   break;
 }

 return gradepoint;


  }
   }

共有3个答案

茅慈
2023-03-14

除非使用Java7,否则不能切换String实例,只能切换int(和byte/char/short,但不能切换long/double)。

如果满足以下条件,则可以使用此选项

if(letterGrade.equals("A+")){
 gradepoint = 12;
}

或升级您的 Java

宋勇
2023-03-14

引用 Java 文档

在JavaSE 7及更高版本中,您可以在开关语句的表达式中使用String对象

这意味着,您的JDK版本是

莫典
2023-03-14

您没有发布足够的代码。您可能在下面执行此操作:

String a = convertToGradePoint(input);

您需要这样做:

int a = convertToGradePoint(input);
 类似资料:
  • 我有这门课: 我试图使用java流从AirbnbListing对象的ArrayList中收集整数价格: 但我得到了“不兼容类型:推断变量R有不兼容的边界”。不确定问题是什么。

  • 我一直试图编译这个简单的警报对话框,以便在用户单击提交按钮时显示。编译代码时会弹出一条错误消息: 错误:(33,74)错误:不兼容的类型: 这个类叫做Login_Activity,它扩展了BaseActivity,它扩展了Activity。

  • 扫描器输入=新扫描器(System.in); }

  • 问题内容: 我正在学习Java。我试图运行代码,但出现此错误:。它向我显示错误的代码部分。 为什么会这样呢? 问题答案: 这是因为在类中不能有两个具有相同名称但返回类型不同的方法。 子类不能使用与返回类型不同的超类中已经存在的方法相同的名称声明方法。 但是,子类可以声明具有与超类相同的签名的方法。我们称此为“覆盖”。 你需要这个 要么 一个好的做法是通过注释标记覆盖的方法:

  • 我有一个FeeAccount列表,我想填写。我想使用。stream.map()来完成它。我所做的是创建一个映射列表并返回它的方法。我使用在网上找到的其他一些示例编写了这段代码。我的问题是,不知何故它返回了一个与list不兼容的list。

  • 我正在使用JPA,列类型为: 我使用PostgreSql作为我的数据库,它支持bpchar类型,现在我尝试为我的测试添加H2,但问题是,当我运行测试时,我得到以下结果: 是否有其他方法可以实现这一目标?