Мне нужно вычесть:
(2 - 0) и (4 - 2).
Мне нужно это, чтобы узнать, сколько чисел пропущено. Я только впервые изучаю кодирование, и по логике мне это показалось правильным.
Код вычитает, если «n» меньше, чем «(statues [statues.length-1])», что «4», поэтому следует остановиться на «2». Поэтому я не могу понять, почему я получаю эту ошибку:
java .lang.ArrayIndexOutOfBoundsException: Индекс 3 выходит за пределы длины 3
Действительно, если я напечатаю "c «Я вижу правильный результат, но, очевидно, он продолжает вычисляться, поскольку строка ошибки - это строка« c ».
Я изменил код на разные версии, и он работал, но в зависимости от чисел в массив, что-то пошло не так.
publi c class MakeArrayConsecutive2 {
public static void main(String[] args) {
int[] statues = {0, 2, 4};
makeArrayConsecutive2(statues);
}
public static int makeArrayConsecutive2(int[] statues) {
Arrays.sort(statues);
int count = 0;
for (int n = statues[0]; n < statues[statues.length-1]; n++) {
int c = statues[n + 1] - statues[n];
System.out.println(c);
if (c != 1) {
count += c - 1;
}
}
System.out.println(count);
return 0;
}
}