Решение задачи — Array Sum

Коротко — способ решения и выбранный подход

Подход: самый простой и понятный — пройти по массиву и аккумулировать сумму в переменной. Обработка краевых случаев: если входной массив равен null — возвращаем 0. Для простоты возвращаем целочисленную сумму (тип int). При необходимости можно использовать long для защиты от переполнения.

Код

Ниже — минимальная реализация класса ArraySumCalculator и простой JUnit тест (ArraySumCalculatorTest), который проверяет работу метода.

ArraySumCalculator.java

// Пакет и импорты укажите по потребности, например: package com.example;
public class ArraySumCalculator {

    /**
     * Возвращает сумму элементов массива.
     * Если массив == null — возвращает 0.
     *
     * @param arr массив целых чисел
     * @return сумма элементов массива
     */
    public static int sum(int[] arr) {
        if (arr == null) {
            return 0;
        }
        int total = 0;
        for (int v : arr) {
            total += v;
        }
        return total;
    }

    // Дополнительно можно добавить метод для long, если ожидается риск переполнения:
    public static long sumLong(int[] arr) {
        if (arr == null) return 0L;
        long total = 0L;
        for (int v : arr) total += v;
        return total;
    }

    // Простой main для быстрого ручного запуска (опционально)
    public static void main(String[] args) {
        int[] a = {1, 2, 3, 4, 5};
        System.out.println("Sum = " + sum(a)); // Sum = 15
    }
}

ArraySumCalculatorTest.java (JUnit 5)

// Пример теста с JUnit 5. Укажите пакет аналогично реализации.
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class ArraySumCalculatorTest {

    @Test
    void sum_nullArray_returnsZero() {
        assertEquals(0, ArraySumCalculator.sum(null));
    }

    @Test
    void sum_emptyArray_returnsZero() {
        assertEquals(0, ArraySumCalculator.sum(new int[]{}));
    }

    @Test
    void sum_positiveNumbers() {
        assertEquals(15, ArraySumCalculator.sum(new int[]{1, 2, 3, 4, 5}));
    }

    @Test
    void sum_negativeAndPositive() {
        assertEquals(0, ArraySumCalculator.sum(new int[]{-2, -1, 0, 1, 2}));
    }

    @Test
    void sum_withLargeValues_useLongIfNeeded() {
        // Демонстрация: если ожидается переполнение int, используйте sumLong в коде и тестах.
        int[] arr = {Integer.MAX_VALUE, 1};
        // Здесь проверяем поведение current int-версии (ожидаем переполнение): Integer.MAX_VALUE + 1 == Integer.MIN_VALUE
        assertEquals((int)((long)Integer.MAX_VALUE + 1), ArraySumCalculator.sum(arr));
        // Если вы хотите корректную большую сумму — используйте sumLong и assertEquals( (long)Integer.MAX_VALUE + 1, ArraySumCalculator.sumLong(arr) );
    }
}

Примечания