用Java创建一个单掷骰子程序,但它不是掷骰子300次,而是掷骰子320次

用Java创建一个单掷骰子程序,但它不是掷骰子300次,而是掷骰子320次,java,dice,Java,Dice,一段时间以来,我一直在试图找出这段代码中的错误所在,但我就是想不出来。该程序将一个6面模具滚动300次,然后输出每次滚动的次数。但出于某种原因,它不是滚动300次,而是滚动320次。我看不出for循环有什么问题,所以我在这里真的很茫然 public static void dieRoll(){ int[] roll = new int [300]; int[] count = new int[] {1,2,3,4,5,6}; for(int i = 1; i<30

一段时间以来,我一直在试图找出这段代码中的错误所在,但我就是想不出来。该程序将一个6面模具滚动300次,然后输出每次滚动的次数。但出于某种原因,它不是滚动300次,而是滚动320次。我看不出for循环有什么问题,所以我在这里真的很茫然

public static void dieRoll(){
    int[] roll = new int [300];
    int[] count = new int[] {1,2,3,4,5,6};

    for(int i = 1; i<300; i++){
            roll[i] = (int) Math.ceil( (int) (Math.random()*6)+1 );

//          roll[i] = (int) Math.ceil(roll[i]);
//          System.out.println(roll[i]);

            if(roll[i]==1){
                count[0]++;
            }
            else if(roll[i]==2){
                count[1]++;
            }
            else if(roll[i]==3){
                count[2]++;
            }
            else if(roll[i]==4){
                count[3]++;
            }
            else if(roll[i]==5){
                count[4]++;
            }
            else if(roll[i]==6){
                count[5]++;
            }

        //  System.out.println(roll[i]);

    }//i loop   

    System.out.println("The die landed on 1 " + count[0] + " times.");
    System.out.println("The die landed on 2 " + count[1] + " times.");
    System.out.println("The die landed on 3 " + count[2] + " times.");
    System.out.println("The die landed on 4 " + count[3] + " times.");
    System.out.println("The die landed on 5 " + count[4] + " times.");
    System.out.println("The die landed on 6 " + count[5] + " times.");
    System.out.println("The die was rolled this many times: " + (count[0]+count[1]+count[2]+count[3]+count[4]+count[5]));

}//dieRoll()
publicstaticvoiddieroll(){
int[]滚动=新int[300];
int[]count=新的int[]{1,2,3,4,5,6};

对于(int i=1;i您将计数初始化如下:

int[] count = new int[] {1,2,3,4,5,6};
现在,1+2+3+4+5+6等于21。循环从1到299,即299次迭代。当然,299+21等于320

您应该将数组初始化为全零

最后,您的代码可以简化:

for( int i = 0; i < 300; i++ )
{
    roll[i] = (int) Math.ceil( (int) (Math.random()*6)+1 );
    count[roll[i] - 1]++;
}
for(int i=0;i<300;i++)
{
roll[i]=(int)Math.ceil((int)(Math.random()*6)+1);
计数[滚动[i]-1]+;
}

您可以这样初始化您的计数:

int[] count = new int[] {1,2,3,4,5,6};
现在,1+2+3+4+5+6等于21。循环从1到299,即299次迭代。当然,299+21等于320

您应该将数组初始化为全零

最后,您的代码可以简化:

for( int i = 0; i < 300; i++ )
{
    roll[i] = (int) Math.ceil( (int) (Math.random()*6)+1 );
    count[roll[i] - 1]++;
}
for(int i=0;i<300;i++)
{
roll[i]=(int)Math.ceil((int)(Math.random()*6)+1);
计数[滚动[i]-1]+;
}
如果在进入循环之前执行最后一次println,您将看到问题。您的
计数
数组以非零值开始。如果在进入循环之前执行最后一次println,您将看到问题。您的
计数
数组以非零值开始。