【发布时间】:2015-07-13 00:16:14
【问题描述】:
我正在编写一个程序来模拟两个 6 面骰子的滚动。程序将一遍又一遍地“重新掷”骰子,直到达到 7。程序会跟踪掷到 7 所需的次数。在代码结束时,程序将输出一个平均值,该平均值将由下式计算(总卷数/n)“n”是用户选择选择程序的次数。
我遇到的新问题是获得 7 的平均滚动数。我得到的平均数为 0.125,这显然没有任何意义。我需要添加一个我猜想但又不确定的新参数。
import java.util.*;
public class HW9 {
public static void main(String args []) {
Scanner s = new Scanner(System.in);
int n = -1;
do {
System.out.println("Enter a number greater than 1.");
n = s.nextInt();
}
while(n <= 1);
int total = 0;
for(int i = 0; i < n; i++) {
int times = 0;
int result = 0;
while(result !=7) {
result = (1 + ((int)(Math.random()* 6))) + (1 + ((int)(Math.random() * 6)));
times++;
}
total = times;
}
System.out.println("Average: " + (double)total/n);
}
}
【问题讨论】:
-
Java 不是 JavaScript。除了那个潜在的灾难性错误之外,您还有一个
while循环,它专门告诉程序只要您输入的数字大于1,就会继续询问您,而不是在发生这种情况时停止询问您。跨度> -
我的错误,添加标签时没有仔细看。我应该怎么做才能解决这个问题?我需要我必须启动程序的while循环(至少我认为我这样做)。如果这看起来微不足道,请原谅我,但我的代码经验几乎为零,我只是想通过我所在的课程。
-
不会明确告诉你,但你的代码说“当
n大于1时做这个问题”。你想要“做题直到n大于1”,或者等效地和更多Java-ish-ly,“在n仍然不 大于1"。 -
所以我应该选择 while (n !> 1); ?
-
这不是有效的语法。
!是一个取反布尔值的运算符,即true或false(例如比较的结果);你不能否定另一个运算符。但这个想法是对的。此外,“不大于”与“小于或等于”相同。所以你有两种同样有效的方式来重写它。