Почему не работает метод, который выводит на экран значения нечетных элементов массива?
Необходимо написать метод, позволяющий вывести на экран значения нечетных элементов массива, их количество и сумму их значений. Результат вывести в консоль.
package com.company;
public class Main {
public static void main(String[] args) {
int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (int i = 0; i < array.length; i++) {
System.out.println(Zero(array[i]));
}
}
static void Zero(int array) {
int numbers = 0;
int summaNechet = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] % 2 != 0) {
summaNechet += array[i];
numbers++;
}
}
System.out.println("Количество нечетных элементов массива: " + numbers);
System.out.println("Сумма нечетных элементов массива: " + summaNechet);
}
}
Ответы (2 шт):
Автор решения: Danis
→ Ссылка
package com.company;
public class Main {
public static void main(String[] args) {
int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Zero(array);
}
static void Zero(int array) {
int numbers = 0;
int summaNechet = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] % 2 != 0) {
summaNechet += array[i];
numbers++;
}
}
System.out.println("Количество нечетных элементов массива: " + numbers);
System.out.println("Сумма нечетных элементов массива: " + summaNechet);
}
}
Автор решения: Дмитрий
→ Ссылка
Только сегодня писал про принцип единой ответственности... Не нужно писать метод, позволяющий вывести на экран значения нечетных элементов массива, их количество и сумму их значений, потому как в этом случае этот самый метод нарушает указанный принцип. Сделайте так:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] oddElements = oddElements(array);
System.out.println(Arrays.toString(oddElements));
System.out.println("Количество нечетных элементов массива: " + oddElements.length);
System.out.println("Сумма нечетных элементов массива: " + sumElements(oddElements));
}
public static int[] oddElements(int[]array) {
return Arrays.stream(array).filter(e->e%2!=0).toArray();
}
public static long sumElements(int[]array) {
return Arrays.stream(array).sum();
}
}