Подход: самый простой и понятный — пройти по массиву и аккумулировать сумму в переменной.
Обработка краевых случаев: если входной массив равен null — возвращаем 0.
Для простоты возвращаем целочисленную сумму (тип int). При необходимости можно использовать long для защиты от переполнения.
Ниже — минимальная реализация класса ArraySumCalculator и простой JUnit тест (ArraySumCalculatorTest), который проверяет работу метода.
// Пакет и импорты укажите по потребности, например: 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
}
}
// Пример теста с 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) );
}
}
long для суммирования и/или проверяйте переполнение при добавлении.