我有这些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++;
}
}
答案 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++;
}
}