java - 随机生成方程和答案

标签 java android random equation

我正在尝试随机生成一个等式,该等式也有 50% 的几率出错并显示不正确的答案。错误答案应该有 -2、-1、+1 或 +2 的错误。

有时我的代码会打印这样的除法方程(我无法发布图片): 2/10 = 13 1/5 = 43 等

我不明白为什么方程显示的是未一起检查的混合数字?

(首先在我的 onCreateView 方法中调用 generateNumbers()

public void generateNumbers() {
    //randomly generate 2 numbers and an operator
    number1 = (int) (Math.random() * 10) + 1;
    number2 = (int) (Math.random() * 10) + 1;
    operator = (int) (Math.random() * 4) + 1;
    //50% chance whether the displayed answer will be right or wrong
    rightOrWrong = (int) (Math.random() * 2) + 1;
    //calculate the offset of displayed answer for a wrong equation (Error)
    error = (int) (Math.random() * 4) + 1;
    generateEquation();
}

public void generateEquation() {
    StringBuilder equation = new StringBuilder();
    //append the first number
    equation.append(number1);
    //generate/append the operator and calculate the real answer
    if (operator == 1) {
        equation.append(" + ");
        actualAnswer = number1 + number2;
    } else if (operator == 2) {
        equation.append(" - ");
        actualAnswer = number1 - number2;
    } else if (operator == 3) {
        equation.append(" x ");
        actualAnswer = number1 * number2;
    } else if (operator == 4) {
        if ((number1%number2==0) && (number1>number2)) {
            actualAnswer = number1 / number2;
        } else {
            generateNumbers();
        }
        equation.append(" / ");

    }
    //append the second number and the equals sign
    equation.append(number2 + " = ");

    //we will display the correct answer for the equation
    if (rightOrWrong == 1) {
        displayedAnswer = actualAnswer;
        equation.append(displayedAnswer);
    }
    //we will display an incorrect answer for the equation
    //need to calculate error (-2, -1, +1, +2)
    else {
        if (error == 1) {
            displayedAnswer = actualAnswer - 1;
        } else if (error == 2) {
            displayedAnswer = actualAnswer - 2;
        }else if (error == 3) {
            displayedAnswer = actualAnswer + 1;
        }else {
            displayedAnswer = actualAnswer + 2;
        }
        //append the displayed answer with error
        equation.append(displayedAnswer);

    }
    questionNumber.setText("You have answered " + count + " out of 20 questions");
    finalEquation.setText(equation.toString());
}

最佳答案

我认为你需要在调用 generateNumbers 之后放置一个 return 语句

} else if (operator == 4) {
    if ((number1%number2==0) && (number1>number2)) {
        actualAnswer = number1 / number2;
    } else {
        generateNumbers();
    }
    equation.append(" / ");

}

因为这将重新启动整个过程,而不是继续使用更多数字。

关于java - 随机生成方程和答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29918425/

相关文章:

haskell - 如何在haskell中正确生成随机字节串

javascript - 包含范围内的随机 float 加倍

java - Hibernate 一对多返回多个重复对象

android - 如何修复错误 :No such property: javaOuptuts for class: com. android.build.gradle.internal.scope.VariantScopeImpl

java - GLSL 着色器未编译,无错误消息

android - Ionic - 启用 GPS

java - 计算当前连胜 - sqlite

python - 如何使用 numpy.random.rand 设置生成点的最小距离约束?

java - "org.apache.commons.lang.StringEscapeUtils"和 "en dash"

java - Spring WebFlux WebClient timeout() 和 exchange()