Решаю задачу. Проблема в переменной
С клавиатуры вводится число n - размер массива. Необходимо создать массив указанного размера и заполнить его случайными числами от 0 до 10. Затем вывести содержимое массива в консоль, а также вывести в консоль информацию о: а) Длине массива б) Количестве чисел больше 8 в) Количестве чисел равных 1 г) Количестве четных чисел д) Количестве нечетных чисел е) Сумме всех элементов массива
Написал код, но переменная count суммируется с каждым циклом.
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
System.out.println("Введите размер массива");
int n = scn.nextInt();
int[] array = new int[n];
int count = 0;
for (int i = 0; i < array.length; i++){
array[i] = (int) (Math.random() * 10);
}
System.out.println("Информация о массиве: " + Arrays.toString(array));
System.out.println("Длина массива: " + array.length);
for (int i = 0; i < array.length; i++){
if (array[i] > 8){
count++;
}
}
System.out.println("Количество чисел больше 8: " + count);
for (int i = 0; i < array.length; i++){
if (array[i] == 1){
count++;
}
}
System.out.println("Количество чисел равных 1: " + count);
for (int i = 0; i < array.length; i++){
if (array[i] % 2 == 0) {
count++;
}
}
System.out.println("Количество четных чисел: " + count);
for (int i = 0; i < array.length; i++){
if (array[i] % 2 != 0) {
count++;
}
}
System.out.println("Количество нечетных чисел: " + count);
for (int i = 0; i < array.length; i++){
count += array[i];
}
System.out.println("Сумма всех элементов массива: " + count);
}
}
Как решить проблему? Вместо одной переменной count создать отдельные переменные для каждого цикла?
Ответы (1 шт):
Интересно, когда вы писали эту программу, вам не казалось, что вы все время пишите один и тот же код? Про принципы KISS, DRY не приходилось слышать?
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
System.out.println("Введите размер массива");
int[] array = new Random().ints(scn.nextInt(), 0, 10).toArray();
System.out.println("Информация о массиве: " + Arrays.toString(array));
System.out.println("Длина массива: " + array.length);
System.out.println("Количество чисел больше 8: " + count(array, i -> i > 8));
System.out.println("Количество чисел равных 1: " + count(array, i -> i == 1));
System.out.println("Количество четных чисел: " + count(array, i -> i % 2 == 0));
System.out.println("Количество нечетных чисел: " + count(array, i -> i % 2 != 0));
System.out.println("Сумма всех элементов массива: " + Arrays.stream(array).sum());
}
private static long count(int[] array, IntPredicate predicate) {
return Arrays.stream(array).filter(predicate).count();
}