Нужен код, который умножает массивы и возвращает 0, если массив пуст - PullRequest
0 голосов
/ 03 августа 2020

Мне нужен код, который умножает содержимое массива, сформированное тестом

public void testMulArray() {
    FirstSteps firstSteps = new FirstSteps();
    int[] array1 = {1, 2, 3};
    assertEquals(6, firstSteps.mul(array1));
    int[] array2 = {-1, -2, 3};
    assertEquals(6, firstSteps.mul(array2));
    int[] array3 = {1, 2, 0};
    assertEquals(0, firstSteps.mul(array3));
    int[] array4 = {};
    assertEquals(0, firstSteps.mul(array4));
}

Перед этим я сделал аналогичный код, который возвращает сумму содержимого массива, сформированного тестом

public void testSumArray() {
    FirstSteps firstSteps = new FirstSteps();
    int[] array1 = {1, 2, 3};
    assertEquals(6, firstSteps.sum(array1));
    int[] array2 = {-1, -2, 3};
    assertEquals(0, firstSteps.sum(array2));
    int[] array3 = {};
    assertEquals(0, firstSteps.sum(array3));
}

Код суммы:

public class FirstSteps {
    public int sum(int[] array){
        int sum = 0;
        for (int value : array) {
            sum += value;
        }
        return sum;
    }
}

Это сработало, и для умножения я сделал аналогичный код

public class FirstSteps {
    public int mul(int[] array){
        int mul = 0;
        for (int value : array) {
            mul *= value;
        }
        return mul;
    }
}

1 Ответ

0 голосов
/ 03 августа 2020

Вы получаете mul = 0, но умножение нуля на любое число дает ноль!

Вместо этого вы должны сделать это начальное значение mul = 1.

public class FirstSteps {
    public int mul(int[] array){
        if (array.length == 0) return 0;
        int mul = 1; 
        for (int value : array) {
            mul *= value;
        }
        return mul;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...