Проблема, с которой вы столкнулись, это ArrayIndexOutOfBoundsException
, потому что, когда i
равно b.length-1
, вы пытаетесь получить доступ к b[i+1]
, равному b[b.length]
, и это невозможно, так как индексирование начинается с 0, поэтому вам нужно остановить один шагbefore.
Также, чтобы получить только одно условие, вы можете умножить и посмотреть на знак результата:
public static int changeSign(int[] b) {
int counter = 0;
for (int i = 0; i < b.length - 1; i++) {
if (b[i] * b[i + 1] < 0) {
counter++;
}
}
return counter;
}