Я решаю следующую задачу : В первой строке задано n - количество строк матрицы. Во второй - m - количество столбцов. Числа m и n не превосходят 1000. В следующих n строках задана матрица. Элементы матрицы - целые числа, по модулю не превосходящие 1000. В последних двух строках записаны координаты элемента (индексация начинается с нуля), соседей которого нужно найти.(т.е найти нужно все соседние , кроме диагональных). В моей программе index1 и index2 - это те индексы , вокруг которых нужно вывести соседей.На этой строчке программа падает когда мы вводим 0 :boolean b=Arrays.asList(array).contains(array[index1-1][index2]); и выдает ArrayIndexOutOfBoundsException , я понимаю что оно выходит за пределы массива , но это же подразумевается как проверка на содержание в массиве , вообщем я не знаю как с этим разобраться package com.company; import java.util.Arrays; import java.util.Scanner; public class Main { public static int[][] array; public static void main(String[] args) { Scanner scann = new Scanner(System.in); int n =scann.nextInt(); int m =scann.nextInt(); array = new int[n][m]; for(int i = 0 ; i < n ; i++){ for(int j = 0;j < m ; j++){ array[i][j] = scann.nextInt(); } } int index1 =scann.nextInt(); int index2 =scann.nextInt(); boolean b=Arrays.asList(array).contains(array[index1-1][index2]); boolean c=Arrays.asList(array).contains(array[index1][index2-1]); boolean d=Arrays.asList(array).contains(array[index1+1][index2]); boolean e= Arrays.asList(array).contains(array[index1][index2+1]); if (b == true){ System.out.print(array[index1-1][index2]+ " "); } if (c == true){ System.out.print(array[index1][index2-1]+ " "); } if (d == true){ System.out.print(array[index1+1][index2]+ " "); } if (e == true){ System.out.print(array[index1][index2+1]+ " "); } } }