【问题标题】:Java Switch Case Boolean functions?Java Switch Case布尔函数?
【发布时间】:2018-05-27 17:43:37
【问题描述】:

我正在做一些 Java 作业,我正在处理一个问题,其中包含将测试分数转换为字母等级的代码,其中必须找到错误:

switch(score)
{
case (score > 90):
grade = 'A';
break;
etc...

我读过的所有地方,以及我在 netbeans 中尝试过的所有内容都表示不允许使用布尔函数。它应该只是一个 if 语句的错误吗?

【问题讨论】:

  • 我不完全理解你的最后两句话,但你试图做的事情不适用于switch ... case ...,请改用ifs。
  • 看来你读的是正确的。这是你要找的确认吗?是的,if/else if 链似乎更合适。
  • 我认为您不理解最后两句话,因为这是错误的一部分。这就是我正在寻找的确认,即布尔函数在开关盒中不起作用。谢谢你们的帮助和保证我没有疯。

标签: java switch-statement boolean case


【解决方案1】:

case 关联的内容必须与switch 中使用的表达式类型兼容。
您在switch 中使用int(可能),因此cases 必须是int 值(或可转换为int 的其他类型,例如char)。问题是您提供了一个boolean,它不能转换为int,而无论它不是您想要的。

JLS.14.11. The switch Statement 确实声明了:

给定一个 switch 语句,以下所有条件都必须为真或 发生编译时错误:

与 switch 语句关联的每个 case 常量都必须是 与 switch 语句的类型兼容的赋值 表达式(§5.2)。

如果这两种类型不匹配,您不想使用switch,而是使用一系列条件语句(if-else-if)来代替。

【讨论】:

    【解决方案2】:

    根据 JLS,case 语句的参数只能是 intshortbytecharStringEnum 文字或常量。

    所以要回答您的问题,给定的代码将无法编译,是的,它应该是 if 语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      • 2021-02-20
      • 2013-08-22
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 2014-07-06
      相关资源
      最近更新 更多