问题描述
packagecom.liu.java1;importjava.util.*;publicclasstest{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubfinaldoubleSTARTRATE=10;finalintNRATE=6;finalintNYEARS=10;double[]interestRate=newdouble[NRATE];for(intii=0;ii<=interestRate.length;ii++){interestRate[ii]=(STARTRATE+ii)/100;}double[][]balance=newdouble[NRATE][NYEARS];for(intii=0;ii<=interestRate.length;ii++){balance[0][ii]=10000;}for(intii=1;ii<=balance.length;ii++){for(intjj=0;jj<=balance[ii].length;jj++){doubleoldBalance=balance[ii-1][jj];doubleinterest=oldBalance*interestRate[jj];balance[ii][jj]=oldBalance+interest;balance[ii][jj]=STARTRATE;}}for(intii=0;ii<=interestRate.length;ii++){System.out.printf("%9.0f%%",100*interestRate[ii]);}System.out.println();/*for(double[]row:balance);{for(doubleb:row)System.out.printf("%10.2f",b);System.out.print("");}*/System.out.println(Arrays.deepToString(balance));}}/*上面的是代码,要打印出一个二维数组,编译没有问题,但是控制板显示Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:6atcom.liu.java1.test.main(test.java:21)请问高手们,哪里出问题了?*/
解决方案
解决方案二:
提示的很清楚了,数组索引越界了。你去检查下,你的21行代码。
解决方案三:
for(intii=0;ii<=interestRate.length;ii++)改成for(intii=0;ii<interestRate.length;ii++)不能取等号比如intk=0;inta[]=newint[3];for(inti=0;i<a.length,i++){a[i]=k+1;}那么a数组只有a[0],a[1],a[2],它的长度为3这样i只能取0,1,2就不会越界了
解决方案四:
for(intii=0;ii<=interestRate.length;ii++){interestRate[ii]=(STARTRATE+ii)/100;}应该是ii<interestRate.length;你是<=这肯定会造成数组越界的!java.lang.ArrayIndexOutOfBoundsException这个异常就是数组越界异常!
解决方案五:
数组越界,for循环中“<=”应改为“<”,数组是从0开始计数的