4

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

我想寻求帮助,因为我对 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 < 9”的位置,尽管我不知道如何修复它。

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

4

3 回答 3

2
case ansCorrect>=8 && ansCorrect < 9: 

switch case 中的 param 必须是ansCorrect>=8 && ansCorrect < 9: 解析为 boolean 的 int wnere case。

如果你看到逻辑ansCorrect>=8 && ansCorrect < 9

就是这样case 8 ??同样case ansCorrect >=6 && ansCorrect < 7:应该写成 case 6

并且关于case ansCorrect == 0 && ansCorrect < 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;
于 2015-09-11T08:04:25.613 回答
2

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

于 2015-09-11T08:04:36.987 回答
1

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

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

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

编辑:还要记住,虽然多个case开关可以解决问题,但如果你在某个时候切换到doubleeg5.15而不是5

于 2015-09-11T08:08:45.767 回答