Java 随机生成方程及答案
我试图随机生成一个等式,这个等式也有50%的几率出错并显示错误的答案。错误答案的错误应该是-2、-1、+1或+2 有时我的代码会打印出这样的除法方程(我无法发布图像): 2 / 10 = 13 1 / 5 = 43 等等 我搞不懂为什么这个等式显示的是一组没有一起检查的数字 (它以调用onCreateView方法中的GenerateEnumbers()开始Java 随机生成方程及答案,java,android,random,equation,Java,Android,Random,Equation,我试图随机生成一个等式,这个等式也有50%的几率出错并显示错误的答案。错误答案的错误应该是-2、-1、+1或+2 有时我的代码会打印出这样的除法方程(我无法发布图像): 2 / 10 = 13 1 / 5 = 43 等等 我搞不懂为什么这个等式显示的是一组没有一起检查的数字 (它以调用onCreateView方法中的GenerateEnumbers()开始 我认为您需要在调用中的generateNumbers之后添加一个return语句 } else if (operator == 4) {
我认为您需要在调用中的
generateNumbers
之后添加一个return
语句
} else if (operator == 4) {
if ((number1%number2==0) && (number1>number2)) {
actualAnswer = number1 / number2;
} else {
generateNumbers();
}
equation.append(" / ");
}
因为这将重新启动整个过程,而不是继续使用更多的数字。更改代码以解决低概率除法问题:
public void generateNumbers() {
number1 = (int) (Math.random() * 10) + 1;
number2 = (int) (Math.random() * 10) + 1;
//don't get operator here
//operator = (int) (Math.random() * 4) + 1;
rightOrWrong = (int) (Math.random() * 2) + 1;
error = (int) (Math.random() * 4) + 1;
//don't generate equation here, start (in the View with generateEquation instead of generate numbers
//generateEquation();
}
public void generateEquation() {
StringBuilder equation = new StringBuilder();
generateNumbers();
//determine operator here
operator = (int) (Math.random() * 4) + 1;
equation.append(number1);
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) {
equation.append(" / ");
// generate new numbers if they are not suiteable
while((number1%number2!=0) && (number1<number2))
{
generateNumbers();
}
actualAnswer = number1 / number2;
}
......
public void generateNumbers(){
number1=(int)(Math.random()*10)+1;
number2=(int)(Math.random()*10)+1;
//别让接线员过来
//运算符=(int)(Math.random()*4)+1;
RightorError=(int)(Math.random()*2)+1;
错误=(int)(Math.random()*4)+1;
//不要在此处生成方程式,在视图中使用generateEquation而不是GenerateNumber开始
//生成方程();
}
公共无效生成公式(){
StringBuilder公式=新的StringBuilder();
generateNumbers();
//此处确定运算符
运算符=(int)(Math.random()*4)+1;
方程式。附加(编号1);
if(运算符==1){
方程式。附加(“+”);
实际功率=1号+2号;
}else if(运算符==2){
方程式。附加(“-”);
actualAnswer=number1-number2;
}else if(运算符==3){
方程式。附加(“x”);
actualAnswer=number1*number2;
}else if(运算符==4){
方程式。附加(“/”);
//如果不适合,则生成新号码
而((number1%number2!=0)和(数字1您的代码中有一些奇怪的东西。您生成数字,然后生成方程式。然后,在生成方程式时,如果它们不适合除法,则生成新的数字,因此再次调用generate numbers函数。这反过来又调用generate equation函数,但当此操作完成后,第一次调用generate方程还在继续。是的,当我试图求解它时,我就是这么想的,但我太深入了,弄不明白。有标记的答案解决了它。很好,谢谢。不知道我怎么会没有想到。直到现在我才意识到它实际显示除法方程的几率很低,但它仍然有效。C也许会更好,但我认为这会解决问题。
public void generateNumbers() {
number1 = (int) (Math.random() * 10) + 1;
number2 = (int) (Math.random() * 10) + 1;
//don't get operator here
//operator = (int) (Math.random() * 4) + 1;
rightOrWrong = (int) (Math.random() * 2) + 1;
error = (int) (Math.random() * 4) + 1;
//don't generate equation here, start (in the View with generateEquation instead of generate numbers
//generateEquation();
}
public void generateEquation() {
StringBuilder equation = new StringBuilder();
generateNumbers();
//determine operator here
operator = (int) (Math.random() * 4) + 1;
equation.append(number1);
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) {
equation.append(" / ");
// generate new numbers if they are not suiteable
while((number1%number2!=0) && (number1<number2))
{
generateNumbers();
}
actualAnswer = number1 / number2;
}
......