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: 

ansCorrect>=8 && ansCorrect < 9: switch ケースの param は、boolean に解決されるint wnere ケースでなければなりません。

そして、ロジックが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

そんな使い方はできませんcaseifあなたが考えているように、それは節を書く別の方法ではありません。

于 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スイッチで問題が解決する可能性がありますが、ある時点で代わりにdoubleegに切り替えると問題が発生することにも注意してください5.155

于 2015-09-11T08:08:45.767 に答える