我正在编写一个模拟两个6面骰子滚动的程序。该计划将" reroll"骰子一遍又一遍,直到它达到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);
}
}
答案 0 :(得分:1)
您要求的数字大于1,但每次输入的数字大于1时,您都会重复循环。
do {
System.out.println("Enter a number greater than 1.");
n = s.nextInt();
}
while(n > 1);
while(n > 1)
应该是while(n < 1)
或者你想放在那里的任何东西。
答案 1 :(得分:1)
您的问题与您的循环条件有关。
while(n > 1);
它重复do
块内的语句,条件为真。输入数字&gt; 1表示条件保持为真,因此在输入0或负数之前,它将继续请求输入。
要修复它,您需要交换条件语句,如下所示:
while(n < 1)