Помогите упростить код. JAVA
Стояла следующая задача: Пользователь вводит 20 случайных чисел. Программа должна создать большой массив из 20 чисел и заполнить его этими числами. Затем программа создает еще 2 массива маленьких по 10 чисел. После программа должна скопировать первую половину большого массива в первый маленький массив, вторую половину - во второй, вычислить сумму чисел этих массивов, сравнить и вывести тот массив, сумма чисел которого наименьшая.
Ниже привел код, который у меня получился.
Суть моего вопроса: код получился слишком громоздким. И что-то мне подсказывает, что его можно существенно упростить. Подскажите пожалуйста как это можно сделать
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws Exception {
int[] bigMass = new int[20];
int[] smallMass1 = new int[10];
int[] smallMass2 = new int[10];
int sum1 = 0;
int sum2 = 0;
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 20; i++) {
bigMass[i] = sc.nextInt();
}
for (int i = 0; i < 10; i++) {
smallMass1[i] = bigMass[i];
}
for (int i = 10; i < 20; i++) {
smallMass2[i - 10] = bigMass[i];
}
for (int i = 0; i < smallMass1.length; i++) {
sum1 = sum1 + smallMass1[i];
}
for (int i = 0; i < smallMass2.length; i++) {
sum2 = sum2 + smallMass2[i];
}
int min = (sum1 < sum2) ? sum1 : sum2;
if (min == sum1)
for (int i = 0; i < 10; i++) {
System.out.println(smallMass1[i]);
}
else
for (int i = 0; i < 10; i++) {
System.out.println(smallMass2[i]);
}
}
}
Ответы (1 шт):
Я не java-гуру, но что бы не сделать вот так
public static void main(String[] args) {
int[] bigMass = new int[20];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 20; i++) {
bigMass[i] = sc.nextInt();
}
int[] smallMass1 = Arrays.stream(bigMass).limit(10).toArray();
int[] smallMass2 = Arrays.stream(bigMass).skip(10).limit(10).toArray();
if (Arrays.stream(smallMass1).sum() < Arrays.stream(smallMass2).sum())
System.out.println(Arrays.toString(smallMass1));
else
System.out.println(Arrays.toString(smallMass2));
}