【发布时间】:2021-04-04 00:25:09
【问题描述】:
我正在编写一个程序,该程序将掷骰子 n 次,并在六种可能结果之一被掷出 1000000 次后立即停止。结果存储在一个数组中。不幸的是,我的代码没有在正确的时间停止,我认为 while 循环有问题。
import java.util.Random;
public class Wuerfel {
public static void main(String[] args) {
Random randomNumber = new Random();
int[] rolledNumbers = {0, 0, 0, 0, 0, 0};
while (rolledNumbers[0] < 1000000 || rolledNumbers[1] < 1000000 || rolledNumbers[2] < 1000000 || rolledNumbers[3] < 1000000 || rolledNumbers[4] < 1000000 || rolledNumbers[5] < 1000000) {
int roll = randomNumber.nextInt(6) + 1;
switch (roll) {
case 1:
rolledNumbers[0]++;
case 2:
rolledNumbers[1]++;
case 3:
rolledNumbers[2]++;
case 4:
rolledNumbers[3]++;
case 5:
rolledNumbers[4]++;
case 6:
rolledNumbers[5]++;
}
}
}
}
提前致谢!
【问题讨论】:
-
第一个提示:你真的希望那个开关是
rolledNumbers[roll - 1]++:)) -
提示:当一个递增时,您不需要检查所有边。只检查你刚刚增加的那一面,看看它是否达到了 1,000,000。您可以从
while更改为do...while。 -
在每个 case 子句之后都需要 break 语句。
-
是的,这是个好主意。 do-while 与rolledNumbers[roll-1]++ 结合意味着不再需要开关
标签: java arrays while-loop dice