Через дебагер проверял, с помощью переопределённого toString смотрел содержимое спика lines, всё идентично условию и примерам, но валидатор не принимает...
package com.javarush.task.task19.task1916;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/*
Отслеживаем изменения
C:\Users\yunus\Desktop\test1.txt
*/
public class Solution {
public static List<LineItem> lines = new ArrayList<LineItem>();
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));) {
String fileName1 = reader.readLine();
String fileName2 = reader.readLine();
ArrayList<String> listFile1 = new ArrayList<>();
ArrayList<String> listFile2 = new ArrayList<>();
try (BufferedReader reader1 = new BufferedReader(new FileReader(fileName1));
BufferedReader reader2 = new BufferedReader(new FileReader(fileName2));) {
while (reader1.ready()) {
listFile1.add(reader1.readLine());
}
while (reader2.ready()) {
listFile2.add(reader2.readLine());
}
int maxSize;
if (listFile1.size() > listFile2.size()){
maxSize = listFile1.size();
} else if (listFile1.size() < listFile2.size()) {
maxSize = listFile2.size();
} else maxSize = listFile1.size();
for (int i = 0; i < maxSize + 1; i++){
if (listFile1.get(0).equals(listFile2.get(0))) {
lines.add(new LineItem(Type.SAME, listFile1.get(0)));
listFile1.remove(0);
listFile2.remove(0);
} else if (listFile1.get(1).equals(listFile2.get(0))) {
lines.add(new LineItem(Type.REMOVED, listFile1.get(0)));
listFile1.remove(0);
} else {
lines.add(new LineItem(Type.ADDED, listFile2.get(0)));
listFile2.remove(0);
}
}
if (listFile1.isEmpty()) {
for (String s : listFile2) {
lines.add(new LineItem(Type.ADDED, s));
}
} else {
for (String s : listFile1) {
lines.add(new LineItem(Type.REMOVED, s));
}
}
// for (LineItem line : lines) {
// System.out.println(line);
// }
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static enum Type {
ADDED, //добавлена новая строка
REMOVED, //удалена строка
SAME //без изменений
}
public static class LineItem {
public Type type;
public String line;
public LineItem(Type type, String line) {
this.type = type;
this.line = line;
}
// public String toString() {
// return type + " " + line;
// }
}
}

