Java

Нужен код на Java

Создать программу.
Определить
1) Сумму элементов массива с нечетными номерами;
2) Произведение элементов массива, расположенных между первым и последним отрицательными элементами.
 int oddSum(int[] array) {
return IntStream.range(0, array.length) // последовательность всех индексов массива
.filter(i -> i % 2 != 0) // оставляем только нечётные номера
.mapToObj(i -> array[i]) // берём нечётные элементы массива
.reduce(0, Integer::sum); // свёртываем в сумму
}
Если нечётных элементов в массиве нет (длина 0 или 1), то на выходе будет 0.

 int multBetweenNegative(int[i] array) {
final int firstNegIndex = IntStream.range(0, array.length)
.filter(i -> array[i] < 0) // оставляем индексы только отрицательных элементов
.findFirst() // находим первый
.orElse(array.length); // если отрицательных элементов нет, то берём длину массива (тогда далее диапазон будет пустой)

final int lastNegIndex = IntStream.range(0, array.length)
.map(i -> array.length - i - 1) // пускаем индексы в обратном порядке
.filter(i -> array[i] < 0) // оставляем индексы только отрицательных элементов
.findFirst() // находим последний
.map(i -> array.length - i - 1) // возвращаем исходное значение индекса
.orElse(-1); // если отрицательных элементов нет, то берём как последний индекс -1 (тогда далее диапазон будет пустой)

return IntStream.rangeClosed(firstNegIndex + 1, lastNegIndex - 1) // между найденными индексами, не включая их
.mapToObj(i -> array[i]) // берём сами элементы массива
.reduce(1, (v, w) -> v * w); // вычисляем произведение
}
Если отрицательных элементов нет, или такой только один, то произведение будет 1.

Если нужно оперировать не целыми числами, а с плавающей точкой, то объявляем параметр как
 double[] array 
И возвращаем также double.
А reduce пишем так:
         .reduce(0.0, Double::sum);

.reduce(1.0, (v, w) -> v * w);

Если нужен long, то используем в этих местах long, а 0 и 1 в reduce пишутся как 0L и 1L (и Long::sum, соответственно).
А остальной код не изменяется.

И это работает, начиная с Java 8.
Сайдали Казлыков
Сайдали Казлыков
87 571
Лучший ответ
как заполняется массив?
вручную вводится?
тупо в код вбивается?
генерируется случайно или по какому-то алгоритму?
считывается из файла?
Алексей Картавый Генерирует в диапазоне [-100; 100]
Так пиши код Java. Зачем ты своё задание написал?