java - 支票乱了?

标签 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

最佳答案

我会用数字来做到这一点:

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 is set to -1 in the field declaration

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

关于java - 支票乱了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28202192/

相关文章:

Python 字典与 If 语句速度

java - 为什么我在 IntelliJ 中收到 Gradle 配置构建错误 junit5?

java - JUnit 如何在Optional 和对象上断言True/Equals

java - 带有 javax.xml.soap 的 SOAP 消息 - 命名空间错误?

java - 如何在 spring boot 中发送 400、401、405、403 和 500 错误的自定义响应?

python - 使用多个 if 条件时如何克服 ValueError?

java - 为什么java servlet不是过滤器?

python - if条件下没有,如何处理缺失数据?

c++ - 将变量与多个值进行比较的最有效方法?

c# - 尝试使用 Else 语句 C# 的初学者?