为什么这会给我这个arrayoutofbounds错误?

时间:2014-02-19 22:24:59

标签: java arrays debugging

我有这些while while循环和for语句。它正是我想要的,打印数组的特定部分。但是,我一直在接受越界声明。我无法弄清楚。我觉得我的if语句应该阻止索引变大然后它已经是。

注意:我已经有了一个创建此数组并初始化其值的方法,因此假设该数组是两个维度。

我有什么建议可以防止它超出范围?

目的是,我希望列和行都加1,直到它们不再增加为止。

    int columnincrement = 0;
    String spacing = "\t";
    int diagcol=0;
    int diagrow=0;
    while(diagcol<themainarray[columnincrement].length)
    {

            System.out.println(spacing+themainarray[diagcol][diagrow]);
            spacing+= "\t";
            System.out.print("\n");

            if (diagcol<=themainarray[columnincrement].length)
            {   

            columnincrement++;
            diagcol++;
            diagrow++;

            }


    }

2 个答案:

答案 0 :(得分:2)

数组是从0开始的。

arr[arr.length]也会抛出异常

将您的if语句更改为以下内容,*请注意<-1;

if (diagcol<themainarray[columnincrement].length - 1)

如果您进行了更改,那么至少您的代码可能会在没有indexoutofbounds异常的情况下运行。这不是100%的机会。


如果themainarray.length小于themainarray[columnincriment].length,那么您也会获得例外,因为您无法检查themainarray.length

答案 1 :(得分:0)

我认为你正在检查错误的东西。看起来你想要在d2array的第一部分和if语句中想要在2darray的第二部分中的项目数量。这可能有效:

int columnincrement = 0;

String spacing = "\t";
int diagcol=0;
int diagrow=0;
while(diagcol<themainarray.length) {
        System.out.println(spacing+themainarray[diagcol][diagrow]);
        spacing+= "\t";
        System.out.print("\n");

        if (diagrow<=themainarray[columnincrement].length) {   
            columnincrement++;
            diagcol++;
            diagrow++;
        }

}