0

我试图让这个循环不断重复,直到结果可以被 1 修改并且结果为 0。
这会产生一个除法问题,我只想要答案是整数的问题。所以答案应该是 1,2,3,4 等,但不是带小数位的答案。

double resulta = 1.3678; // Make it run once instead of do while
while (resulta % 1 != 0) {
    int first = randInt(0,9);
    int last = randInt(0,9);
    MainActivity.result = (first / last);
    resulta = MainActivity.result;
    String Sfirst = String.valueOf(first);
    String Slast = String.valueOf(last);
    System.out.println(MainActivity.result);
    question = "" + Sfirst + " / " + Slast + " = ?";
}
4

3 回答 3

1

问题在这里:

MainActivity.result = (first / last); //you're doing an integer division here
resulta = MainActivity.result;

因为 first 和 last 都是整数,所以这个除法的结果返回一个整数。

为什么它返回一个整数?

但是每个整数模 1 返回 0,所以resulta % 1总是等于0,因此你的 while 循环永远不会结束。

于 2013-11-04T18:10:37.147 回答
0

您正在测试resulta % 1 != 0,这很荒谬,因为%对于非整数(resulta是浮点数)未定义。

要么您必须更改resulta为整数,要么您必须为您的语句期待非整数值。

于 2013-11-04T18:05:16.557 回答
0

尝试这样的事情:

while((resulta - (long)resulta) != 0) {
    //do stuff
}

如果resulta是 3.14159,则为(long)resulta3。任何resulta有小数点的时间,此while循环的上述条件检查将返回true

于 2013-11-04T18:05:29.907 回答