1

编辑:非常感谢我的程序终于运行了。

我编辑了 addChoice 的代码,让它读取一串连接的数字和空格;我还修改了 checkanswer 方法,但每当我输入正确答案时,它仍然算错,以下是我的代码

          public void addChoice(String choice, boolean correct){
      super.addChoice(choice, correct);
      if(correct == true){
           count++;
           choiceString +=   "" + count+" " ;
           answers.add(choiceString);
            }
       super.setAnswer(choiceString.trim());
     }            


     public boolean checkAnswer( String response )
   {
    super.checkAnswer(response);
    boolean ok = false;
    response = response.trim();
    String correctAnswers [] = response.split(" ");
    for(int i=0; i<correctAnswers.length;i++){
        if (answers.contains(correctAnswers[i]))
        { ok = true;}
        else
        {  ok=false;}
     }
    return ok;
   }

我的问题:

对于我的问题,第一个和第二个选项是正确的。因此,他/她可以输入 1 或 2 或 1 2 或 2 1 以便他/她在问题上获得满分;当我键入除上面列出的选项之外的任何其他选项时,我应该恢复一个零。所以我的问题是我的检查答案方法总是出于某种原因返回 true,所以无论我输入什么,即使我输入了错误的答案,它也会将其视为 true。所以,我需要这部分的帮助。

谢谢

4

2 回答 2

3

您总是将其设置为truehere inside AnyChoiceQuestioncheckAnswer

if(true)
     {ok = true;}

我想你的意思是:

if (answers.contains(correctAnswers[i]))
    ok = true;
于 2012-05-24T18:11:56.067 回答
0

您的问题在于 if(true),它总是会触发。所以答案将是真实的。我想你的意思是如果 (answers.contains(correntAnswers[i[)

于 2012-05-24T18:14:27.223 回答