下面是代码
package disanzhang;
public class CompoundInterest {
public static void main(String[] args)
{
final double STARTRATE=10;
final int NRATES=6;
final int NYEARS=10;
double[]interestRate=new double[NRATES];
for(int j=0;j<interestRate.length;j++)
interestRate[j]=(STARTRATE+j)/100.0;
double[][]balances=new double[NYEARS][NRATES];
for(int j=0;j<balances.length;j++)
balances[0][j]=1000;
for(int i=1;i<balances.length;i++)
{for(int j=0;j<balances[i].length;j++)
{
double oldBalance=balances[i-1][j];
double interest =oldBalance*interestRate[j];
balances[i][j]=oldBalance+interest;
}
}
for(int j=0;j<interestRate.length;j++)
System.out.printf("%9.0f",100*interestRate[j]);
System.out.println();
for(double[]row:balances)
{
for(double b:row)
System.out.printf("%10.2f", b);
System.out.println();
}
}}下面是报的错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at disanzhang.CompoundInterest.main(CompoundInterest.java:14)

解决方案 »

  1.   

    数组越界了
    lang.ArrayIndexOutOfBoundsException: 6
      

  2.   

    数组越界了
    lang.ArrayIndexOutOfBoundsException: 6
      

  3.   

    这段代码写的实在是有点那个了,不好帮你改for语句没有{},这是很大的错误,这样就不知道for语句的作用范围了另外,写程序应该有点注释,这样让人容易看懂
      

  4.   

    你的第二个for循环应改为
    for(int j=0;j<balances[0].length;j++)
       balances[0][j]=1000;
    方括号中的下标可以为0~9;
    因为你定义的double[][]balances=new double[NYEARS][NRATES],
    NYEARS=10,NRATES=6,变量j对应的是NRATES最大为5;如果用balances.length,其对应的是NYEARS,最大为9,就超过了j的最大值,所以数组越界。