Добрый день. А можно ли узнать вашу конечную цель? Что вы пытаетесь реализовать?
Код действительно можно сократить, а то и лучше улучшить восприятие.
1) создайте 2 метода, первый из которых будет читать файл, а второй писать в файл. Можно воспользоваться возможностями класса Files из Java 8
2)
String match1 = sc.nextLine();
String match2 = sc.nextLine();
String match3 = sc.nextLine();
String match4 = sc.nextLine();
String scMatch1[] = match1.split(" ");
String scMatch2[] = match2.split(" ");
String scMatch3[] = match3.split(" ");
String scMatch4[] = match4.split(" ");
int a1 = Integer.parseInt(scMatch1[0]);
int a2 = Integer.parseInt(scMatch2[0]);
int a3 = Integer.parseInt(scMatch3[0]);
int a4 = Integer.parseInt(scMatch4[0]);
int b1 = Integer.parseInt(scMatch1[1]);
int b2 = Integer.parseInt(scMatch2[1]);
int b3 = Integer.parseInt(scMatch3[1]);
int b4 = Integer.parseInt(scMatch4[1]);
тут происходит что-то странное. Скорее всего тут есть ошибка.
Вы сперва читаете строку, затем разделяете ее пробелом в массив строк, но потом почему-то присваиваете a1, а2. а3. а4 одно и то же число.
int a1 = Integer.parseInt(scMatch1[0]);
int a2 = Integer.parseInt(scMatch2[0]);
int a3 = Integer.parseInt(scMatch3[0]);
int a4 = Integer.parseInt(scMatch4[0]);
скорее всего должно быть так:
int a1 = Integer.parseInt(scMatch1[0]);
int a2 = Integer.parseInt(scMatch2[1]);
int a3 = Integer.parseInt(scMatch3[2]);
int a4 = Integer.parseInt(scMatch4[3]);
Такая же ситуация с перемеными b1, b2, b3, b4.
А что если человек введет не 4 элемента через пробел, а 5 и более? Или наоборот менее 4-х элементов?
Подобные выражения
a1+a2+a3+a4 > b1+b2+b3+b4
с точки зрения clean code можно вынести в отдельную переменную типа boolean.
Например,
boolean isSumAGreaterThanSumB = a1+a2+a3+a4 > b1+b2+b3+b4;
Ну а далее
if (isSumAGreaterThanSumB ) { ... }