【问题标题】:Greenfoot/Java - incompatible types: boolean cannot be converted to intGreenfoot/Java - 不兼容的类型:boolean 不能转换为 int
【发布时间】:2015-12-07 17:18:27
【问题描述】:

这里有一个新用户...我觉得我的代码有误。

我想寻求帮助,因为我对 Greenfoot 计划比较陌生。手头的问题如问题所述:编译代码时收到“不兼容的类型”错误,无论我进行任何修改,我似乎都无法修复它。问题所在的具体代码部分如下:

        public void answerValidation()
      {
          int ansCorrect = 0;
          int ansIncorrect = 0;

          for(int i = 0; i <= 10; i++)
          {
              answerArray[0] = array1[0] * array2[0];
              if(answer != answerArray[0])
              {
                  ansIncorrect = ansIncorrect + 1;
                  JOptionPane.showMessageDialog(null, array1[0] + "*" + array2[0] + "=" + answerArray[0]);
              }
              else
              {
                  ansCorrect = ansCorrect + 1;
              }
          }

      switch(ansCorrect)
      {
          case 10:  JOptionPane.showMessageDialog(null, "Wow! You got all the questions right!");
                    break;

          case ansCorrect>=8 && ansCorrect < 9:    JOptionPane.showMessageDialog(null, "You scored" + ansCorrect + "out of 10. 80%-90% scored.");
                    break;

          case ansCorrect >=6 && ansCorrect < 7:   JOptionPane.showMessageDialog(null, "You scored" + ansCorrect + "out of 10. Keep practicing in Lv2 to improve.");
                    break;

          case ansCorrect == 0 && ansCorrect < 6:   JOptionPane.showMessageDialog(null, "You scored" + ansCorrect + "out of 10. Keep practicing in Lv1 to improve.");
                    break;
      }

}

编译错误表明它位于显示“&& ansCorrect

欢迎任何更正/请求查看我的代码,非常感谢提供帮助的人!

【问题讨论】:

    标签: java arrays greenfoot


    【解决方案1】:

    您不能在case: 中使用布尔表达式。相反,您可以执行以下操作:

     if(ansCorrect>=8 && ansCorrect < 9){
        JOptionPane.showMessageDialog(null, "You scored" + ansCorrect + "out of 10. 80%-90% scored.");
        }
    

    也作为一个快速建议 - 这:ansCorrect = ansCorrect + 1 可以简化为 ansCorrect++

    编辑:另外请记住,虽然多个case 开关可能会解决问题,但如果您在某个时候切换到double,则会遇到问题,例如5.15 而不是 5

    【讨论】:

    • 有趣的是,我不知道您可以在不进入 for 循环的情况下增加/减少值。必须更多地学习 Java。
    • 如果你想了解更多关于 Java 递增/递减的信息,我建议你看一些解释得很好的教程——比如这个:freejavaguide.com/increment_decrement_operators.htm :) 另外,我可以看到你是新手,作为一个友好的提醒——当你提出一个问题后 15 分钟过去了,并且有解决你问题的答案时——确保你选择其中一个,这样问题就会显示为已解决:)
    【解决方案2】:

    你不能这样使用case。这不是编写if 子句的替代方法,就像您正在考虑的那样。

    【讨论】:

    • 哦..我一直认为“案例”声明是为了审查多个结果。
    • @Blitz 是,但是 switch(foo) 部分的多个结果,而不是需要单个选项的 caseint 或这些天 String,它被转换为 ints in字节码)。
    【解决方案3】:
    case ansCorrect>=8 && ansCorrect < 9: 
    

    switch case 中的参数必须是 int wnere case ansCorrect&gt;=8 &amp;&amp; ansCorrect &lt; 9: 解析为布尔值。

    如果你在ansCorrect&gt;=8 &amp;&amp; ansCorrect &lt; 9看到逻辑

    这正是case 8 ??和case ansCorrect &gt;=6 &amp;&amp; ansCorrect &lt; 7: 一样,应该写成6

    关于case ansCorrect == 0 &amp;&amp; ansCorrect &lt; 6,您可以编写多个具有相同功能的案例

    case 0;
    case 1;
    case 2;
    case 3;
    case 4;
    case 5;
    JOptionPane.showMessageDialog(null, "You scored" + ansCorrect + "out of 10. Keep practicing in Lv1 to improve.");
    break;
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-21
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2021-06-19
    • 2017-03-27
    相关资源
    最近更新 更多