我正在写一个程序,它掷骰子n次,一旦6个可能的结果之一被掷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]++;
}
}
}
}
提前谢谢!
4条答案
按热度按时间jtjikinw1#
提示1
true || false || false || false || true
决定为真。当你考虑你的身体状况时,请考虑这个提示while
循环。提示2
switch语句在默认情况下失效。所以,如果卷是
1
,每rolledNumbers[i]
是递增的,而不仅仅是rolledNumbers[0]
. 添加break
每一个案例的结尾。或者,考虑如何编写一行代码来完成整个过程中相同的事情switch
block应该完成的。cygmwpex2#
以下是基于我最初评论的实现:
提示:当一个值递增时,不需要检查所有边。只检查你刚刚增加的那一面,看看它是否达到1000000。你可以从一段时间变成一段时间。
代码:
样本输出:
请注意,在这行中:
我们将一个随机值(介于0和5之间,包括0和5)分配给
roll
,并且该赋值的结果也立即用于访问rolledNumbers
数组。这是因为java中的赋值也会产生一个“结果”:在运行时,赋值表达式的结果是赋值后变量的值。赋值表达式的结果本身不是变量。
mtb9vblg3#
在while循环条件中,应该使用逻辑运算符&&而不是| |,
并在每个case语句后添加分隔符。
d7v8vwbk4#
当然,如果可以使用switch表达式,那么就不需要
break
在你的switch
.