搞砸了检查?

时间:2015-01-28 20:54:15

标签: java if-statement

只是对我正在做的事情的简短描述 - 我有随机方程生成器和带有所有数字的按钮。为了回答问题,用户必须点击相应的按钮以形成问题(数字从左到右书写),例如9 + 6 = 用户点击1和5 。如果答案是正确的,那么应该出现另一个等式。我现在遇到的问题是,有时当答案是单个数字时,没有出现新的等式,也没有任何错误或其他问题。什么都没发生。大多数情况下,当答案为“0”时。知道可能导致这种情况的原因吗?以下是代码的一部分:

public void checkAnswer(){      
    int answer = question.getAnswer();      
        if(ansID2==-1){
            if(String.valueOf(answer).equals(String.valueOf(ansID1))){
                makeEquation();
            }
        }else{
            if(String.valueOf(answer).equals(String.valueOf(ansID1) + String.valueOf(ansID2))){
                makeEquation();
            }
        }
}

ansID2设置为-1,因此如果答案只是一位数,则跳过第二个数字位置。单击带有数字的按钮时会分配ansID

使用以下代码

从“检查答案”按钮调用

checkAnswer

EventHandler checkHandler = new EventHandler(){     
        @Override
        public void handle(Event arg0) {
            checkAnswer();          
        }
    }; 

ansID2在字段声明

中设置为-1

1 个答案:

答案 0 :(得分:1)

我会用数字做这个:

public void checkAnswer(){      
    int answer = question.getAnswer();
    int response = ansID1;

    if(ansID2 >= 0) {
        response = 10 * response + ansID2;
    } // else a one-digit response
    if (answer == response) {
        makeEquation();
    }
}

至少,这比执行原始代码中的所有字符串操作更有效。话虽如此,我不明白为什么这个版本会产生不同的结果。我倾向于认为你的真正问题出在其他地方,例如答案或答案数字不正确。

特别是,你说

  

ansID2在字段声明

中设置为-1

但这只有在第一个问题有两位数答案之前就足够了,这会导致ansID2设置为其他问题。在创建新方程时,应该重置它(以及ans1ID)。