Galton Box概率

时间:2014-11-24 00:06:01

标签: java arrays loops

嘿伙计们我正在写一个家庭作业的程序来展示一个高尔夫球盒中的球的路径

galton box

到目前为止,我的程序会选择要丢弃的球数,以及框底部的插槽数量,并显示球所采用的随机路径。

我遇到的问题是,如果球的数量大于或等于盒子中的插槽数量,程序就不会完全运行,我会收到此错误

Enter the amount of balls to drop: 
8
Enter the amount of slots: 
8

LRLLRRR
RLRLLLR
RLRLLLL
RLLLLRR
RLRRRLL
RRLRRRR
LLLRRRR
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
    at Set_8_P6_21.main(Set_8_P6_21.java:35)

所以我想知道是否有人能解释为什么会发生这种情况......谢谢!

  import java.util.Scanner;

public class Set_8_P6_21 {

    public static void main(String[] args) {
        int balls, slots;

        System.out.println("Enter the amount of balls to drop: ");

        Scanner input = new Scanner(System.in);
        balls = input.nextInt();

        System.out.println("Enter the amount of slots: ");
        slots = input.nextInt();

        char[] arrayslot = new char[slots-1];

        for (int i = 0; i < balls; i++) {
            System.out.println();

            for (int j = 0; j < slots-1; j++) {

                double k = Math.random();

                if (k < 0.5)
                    arrayslot[i] = 'L';

                else if (k >= 0.5)
                    arrayslot[i] = 'R';

                System.out.print(arrayslot[i]);

            }
        }

    }

}

1 个答案:

答案 0 :(得分:2)

i和球的数量一样高。 arrayslots与广告位数一样大。但你参考了数据库[i],所以如果球的数量超过了插槽的数量,你就会得到这个错误。

你可能应该引用arrayslots [j]而不是。