超出界限的多维数组索引Java

时间:2014-02-26 19:54:50

标签: java arrays

我需要帮助来弄清楚这段代码到底出了什么问题:

public class Fibonacci
{
    public static void main(String args[])
    {
        int[][] numbers;
        numbers = new int[1][25];
        numbers[0][0] = 0;
        numbers[0][1] = 1;
        System.out.println("Fibonacci series: \n");
        System.out.println(numbers[0][0]);
        System.out.println(numbers[0][1]);

        for(int i=2; i < 20; i++)
        {
            numbers[1][i] = numbers[0][i-2] + numbers[0][i-1];
            System.out.println(numbers[1][i]);
        }
    }
}

我收到此错误:

   Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
        at Fibonacci.main(Fibonacci.java:15)

我可以看到我的数组索引在第15行超出范围,但我不知道如何解决它。 :/ 帮助赞赏。 :) 附:新来的

3 个答案:

答案 0 :(得分:4)

第15行和第16行都有numbers[1][i],但由于第一维的大小仅为1,因此会引发异常。请尝试将两者都更改为numbers[0][i]

或者,从您尝试做的事情来看,您可以将阵列的初始化更改为

numbers = new int[2][25];

答案 1 :(得分:0)

简而言之,你的阵列还不够大。

您将数组声明为“new int [1] [25]”,这意味着,因为[1],只有一行。 但是在第15行你引用了第二行:“numbers [1] [i]”。

根据您的Fibonacci类名,您的代码显然有更多错误,但您的问题的解决方案是使您的数组更大:“new int [X] [25]”但是为X添加更大的代码。

答案 2 :(得分:0)

二维数组是numbers = new int[1][25];第一个维度大小为1,这意味着你可以使用索引0访问元素或设置值。所以将代码从numbers[1][i]更改为{ {1}}