我正在为我的女儿制作一个简单的Android应用程序,这样她就可以解决数学问题。我发现随机生成加法,减法和乘法问题相当容易,但是除法更加棘手。
我不想进入小数,所以我必须检查每个是否可以整除而没有余数。这就是我正在使用的......
public void genDivQuestion() {
text = (TextView) findViewById(R.id.textView1);
text.setText(divisible());
answer = first / second;
}
public String divisible() {
first = RandomNumGen.getRandIntBetween(2, 12);
second = RandomNumGen.getRandIntBetween(2, 12);
if (first % second == 0) {
return first + " \u00F7 " + second + " = ?";
} else {
return "0";
}
}
我不确定在该行做什么"返回" 0&#34 ;;"。如果我尝试再次调用divisible(),应用程序就会崩溃。
这是RandomNumGen课程,我从James Cho的初学者书中挪用:
import java.util.Random;
public class RandomNumGen {
private static Random rand = new Random();
public static int getRandIntBetween(int lowerBound, int upperBound) {
return rand.nextInt(upperBound - lowerBound) + lowerBound;
}
public static int getRandInt(int upperBound) {
return rand.nextInt(upperBound);
}
}
答案 0 :(得分:2)
不要绘制2个随机数并检查它们是否可以相互整除,而是尝试以下方法:
first = someRandomNumber(2, 12);
second = someRandomNumber(2, 12);
showDivisionProblem(first * second, first)
此问题会要求您将first * second
除以first
,答案应为second
。
例如:
3 * 2 / 2 --> 6 / 2 = 3
在找到2个好数字之前,无需循环运行。这样,数字总是可以分割的。
修改强>
如果将两个操作数限制为12很重要,那么请考虑以下内容:
first = someRandomNumber(2, 12);
second = someRandomNumber(1, 12 / first);
其中first是int类型。
在这种情况下,如果first是任何高于6的值,则第二个被强制为1。 如果first是6到4之间的任何值,则second可以是1或2 如果first是4,则second可以是1,2或3 等