骰子滚动程序,不输出我需要的东西

时间:2015-07-13 00:16:14

标签: java loops

我正在编写一个模拟两个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);
        }
    }

2 个答案:

答案 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)