数组元素用作数组的索引

时间:2015-01-29 03:20:02

标签: java arrays

我有一个我创建的方法,它使用两个数组来查看是否满足某个条件(这个方法是我创建的一个测试方法,用于帮助隔离问题,但还没有取得很大成功)。每次我尝试运行代码时,都会收到错误

java.lang.ArrayIndexOutOfBoundsException: 3
at Player.testRNumber(Player.java:150)
at GameOfSticks1.HumanVsAI(GameOfSticks1.java:79)
at GameOfSticks1.main(GameOfSticks1.java:216)  

我对java很陌生,经过一个小时的尝试弄清楚发生了什么,但收效甚微。真的很感激任何帮助。这是我一直在使用的方法。

public void testRNumber()
    {

        CurrentScore[0] = 1
            int x = CurrentScore[0]; //this equals 12 btw
            int y = CurrentScore[1]; //this equals 3 btw
            System.out.println(x);
            System.out.println(y);
            System.out.println((ArrayOfBuckets[x][y]) + 2); 

            //everything above this comment**strong text** works fine.

            if(ArrayOfBuckets[x-1][y] == 1)
                System.out.println("Ok, so this if loop seems fine.");

        }

2 个答案:

答案 0 :(得分:1)

这是你的问题。您的2D数据桶阵列不是矩形。

java中的2D数组不必是矩形的。我的猜测是你的数组看起来像这样:

{
    ...//Buckets 1 - 10
    {value0, value1, value2}//bucket 11 has < 4 elements.
    {value3, value4, value5, value6,...}//bucket 12 has >= 4 elements.
    //Rest of buckets
}

这意味着调用ArrayOfBuckets[12][3]有效,但调用ArrayOfBuckets[11][3]却没有。

答案 1 :(得分:0)

正如异常消息中所写,您正在尝试访问数组上方的元素。看来你的ArrayOfBuckets的大小为[any] [3],所以最大的第二个索引值是2.请显示你的其余代码(至少是数组初始化)以确保。