Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException

0

Pisze przykładowy kod z "Java.Podstawy" w NetBeans i wyskakuje i powyższy komunikat przy double oldBalance= balances[j-1][z]

 public class TablicaWielowymiarowa {

    /**
     * @param args the command line arguments
     */
    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 i=0; i<interestRate.length; i++)
            interestRate[i]= (STARTRATE+ i)/ 100.0;
        double[][] balances= new double[NYEARS][NRATES];
        
        for(int i=0; i< balances[0].length; i++) balances[0][i]= 10000;
        
        for(int j=0; j<balances.length; j++)
        {
            for(int z=0; z<balances[j].length; z++)
            {
               double oldBalance= balances[j-1][z];
                double interest= oldBalance* interestRate[z];
                balances[j][z]= oldBalance+ interest;
            }
        }
        for(int i=0; i< interestRate.length; i++)
            System.out.printf("%9.0f%%", 100 * interestRate[i]);
        System.out.println();
        for(double[] row: balances)
        {
            for(double b: row)
            System.out.printf("%10.2f", b);
                    System.out.println();
        }
    }
    
}
0

Ciężko sprawdzić, w której linii ? Wychodzisz po za tablice, np. jesli tablica ma 10 elementów, Ty odwołujesz się do 11. Jesli nie potrafisz poradzić sobie z takim błędem to rzuć programowanie...

0

o_O

            for(int z=0; z<balances[j].length; z++)
            {
               double oldBalance= balances[j-1][z];

Robisz fora po indeksach z dla elementu balances[j] ale odwołujesz się tymi indeksami do balances[j-1] które może mieć mniej indeksów z. Brawo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1