package com.liu.java1;import java.util.*;
public class test
{ /**
 * @param args
 */
public static void main(String[] args) 
{
// TODO Auto-generated method stub

final double STARTRATE = 10;
final int NRATE = 6;
final int NYEARS =10;

double[] interestRate = new double[NRATE];
for(int ii = 0; ii <=interestRate.length; ii++)
{
interestRate[ii] = (STARTRATE + ii)/100;
}

double[][] balance = new double[NRATE][NYEARS];
for(int ii = 0; ii <= interestRate.length; ii ++ )
{
balance[0][ii] = 10000;
}

for(int ii = 1; ii <= balance.length; ii++ )
{
for(int jj = 0; jj <= balance[ii].length; jj++)
{ double oldBalance = balance[ii - 1][jj];
double interest = oldBalance * interestRate[jj];

balance[ii][jj] = oldBalance + interest;

balance[ii][jj] = STARTRATE;
}
}

for(int ii = 0; ii <= interestRate.length; ii++)
{
System.out.printf("%9.0f%%", 100 * interestRate[ii]);
}

System.out.println();

/*for(double[] row : balance);
{
for(double b : row)
System.out.printf("%10.2f", b);

System.out.print("");
}*/
System.out.println(Arrays.deepToString(balance));
}}/*上面的是代码,要打印出一个二维数组,编译没有问题,但是控制板显示
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at com.liu.java1.test.main(test.java:21)
请问高手们,哪里出问题了?
*/

解决方案 »

  1.   

    for(int ii = 0; ii <=interestRate.length; ii++) 
    改成
    for(int ii = 0; ii <interestRate.length; ii++) 不能取等号比如
    int k=0;
    int a[]=new int[3];
    for(int i=0;i<a.length,i++){
    a[i]=k+1;
    }
    那么a数组只有a[0],a[1],a[2],它的长度为3
    这样i只能取0,1,2就不会越界了
      

  2.   

    for(int ii = 0; ii <=interestRate.length; ii++) 

    interestRate[ii] = (STARTRATE + ii)/100; 
    } 应该是ii < interestRate.length;你是<=这肯定会造成数组越界的!
    java.lang.ArrayIndexOutOfBoundsException这个异常就是数组越界异常!
      

  3.   

    数组越界,for循环中“<=”应改为“<”,数组是从0开始计数的