сколько раз символ в массиве b изменяется, наблюдая за элементами с начала - PullRequest
0 голосов
/ 02 ноября 2019
public static  int changeSign(int [] b) {

    int counter=0 ;

    for(int i=0;i<b.length;i++) {

        if(b[i]>0 && b[i+1]<0) {

            counter++;

        }
        if(b[i]<0 && b[i+1]>0) {

            counter++;

        }

    }

    return counter;
    }

Например, u 10, -4, 12, 56, -8, -9, символ меняется 3 раз

1 Ответ

0 голосов
/ 02 ноября 2019

Проблема, с которой вы столкнулись, это 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;
}
...