ArrayIndexOutOfBoundsException в двумерном массиве [закрыт]

148
03 ноября 2018, 12:20

Код:

package com.company;
public class Array {
    public static void main(String argv[]) {
        double array[][] =new double[5][5];
        for(int i=1;i<=5;i++) {
            for(int j=1; j<=5; j++){
            array[i][j]=Math.sin(i+j);
            System.out.println(array[i][j]);
        }   }
    }
}

порождает вывод:

0.9092974268256817
0.1411200080598672
-0.7568024953079282
-0.9589242746631385

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at com.company.Array.main(Array.java:8)

Answer 1

Массивы индексируются от 0 до (длина-1).

Такиим образом, обращение к элементу array[1][5] выходит за пределы массива и порождает исключение java.lang.ArrayIndexOutOfBoundsException.

У вас есть две опции

Изменить циклы:

for(int i=0;i<5;i++) {
  for(int j=0; j<5; j++){
    array[i][j]=Math.sin(i+j+2); // +2, потому что теперь обе переменные меньше на 1
    System.out.println(array[i][j]);
  }   
}

Или починить индексы:

for(int i=1;i<=5;i++) {
  for(int j=1; j<=5; j++){
    array[i-1][j-1]=Math.sin(i+j);
    System.out.println(array[i-1][j-1]);
  }   
}
READ ALSO
Google Play Services signInSilently apiexception 4

Google Play Services signInSilently apiexception 4

пилю игру на LIBGDX встроил GPGS у меня такая проблема

157
Apache kaffka запуск тестового consumer приводит к ошибке &ldquo;Java.lang.OutOfMemoryError&rdquo;

Apache kaffka запуск тестового consumer приводит к ошибке “Java.lang.OutOfMemoryError”

Запускаю Apache kaffka на компьютере с Win7 с помощью стандартных команд (указанных в QuickStart)

170
Висeлица на Java. Хорошо ли спроектировано?

Висeлица на Java. Хорошо ли спроектировано?

Вопрос даже не вопрос, а, точнее сказать, просьба показать на мои возможные недочёты, предложить более грамотный код

157
Не работают тесты (TestNG) web-приложение java

Не работают тесты (TestNG) web-приложение java

Я только учусь, не судите строго за вопрос, а еще лучше - помогитеСборка gradle

162