(Java)Ошибка ArrayIndexOutOfBoundsException
Собственно, задача: В массиве не должны встречаться два соседних числа.
В блоке "Data input" мы собираем длину массива, вводим числа в массив и вводим два числа, которые не должны оказаться рядом.
В блоке "Checking" осуществляю проверку на наличие этих двух чисел рядом друг с другом.
В общем все проверки код проходит, но на последнем тесте выдает ошибку: "java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 2"
Уже второй день пытаюсь разобраться, как индекс вообще принимает значение -1, и что же можно сделать, чтобы этого избежать. Поэтому буду сильно благодарен вашей помощи, ну и конечно, абсолютно любым советам по данному коду и теме массивов, Спасибо! :)
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Data input
int len = scanner.nextInt();
int[] array = new int[len];
for (int i = 0; i < len; i++) {
array[i] = scanner.nextInt();
}
int n = scanner.nextInt();
int m = scanner.nextInt();
// Checking
boolean isOccured = true;
for (int i = 0; i < len - 1; i++) {
if ((array[i] == n && array[i + 1] == m) || (array[i] == n && array[i - 1] == m)) {
isOccured = false;
break;
}
else if ((array[i] == m && array[i + 1] == n) || (array[i] == m && array[i - 1] == n)) {
isOccured = false;
break;
}
}
System.out.println(isOccured);
}
}
Ответы (1 шт):
ОК, достаточно поправить проверку так (else не нужно):
boolean isOccured = true;
for (int i = 0; i < len - 1; i++) {
if ((array[i] == n && array[i + 1] == m) ||
(array[i] == m && array[i + 1] == n)) {
isOccured = false;
break;
}
P.S. isOccured
- плохое имя, значение его противоположно названию. может быть - notOccured
или isAbsent