Валидатор жалуется по последнему пункту, а именно по SAME
package com.javarush.task.task19.task1916;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/*
Отслеживаем изменения
*/
public class Solution {
public static List<LineItem> lines = new ArrayList<LineItem>();
public static void main(String[] args) throws IOException {
try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){
List<String> file1 = writeFileInList(reader.readLine());
List<String> file2 = writeFileInList(reader.readLine());
compareFiles(file1, file2);
}
}
private static void compareFiles(List<String> file1, List<String> file2) {
for (int index1 = 0, index2 = 0; index1 <= file1.size(); index1++) {
String currLineOfFile1 = index1 < file1.size() ?
file1.get(index1) : null;
String currLineOfFile2 = index2 < file2.size() ?
file2.get(index2) : null;
String nextLineOfFile2 = index2 + 1 < file2.size() ?
file2.get(index2 + 1) : null;
if(currLineOfFile1 == null && currLineOfFile2 != null) {
lines.add(new LineItem(Type.ADDED, currLineOfFile2));
}else if (currLineOfFile1 != null && currLineOfFile1.equals(currLineOfFile2)) {
lines.add(new LineItem(Type.SAME, currLineOfFile2));
index2++;
}else if (currLineOfFile1 != null && currLineOfFile1.equals(nextLineOfFile2)) {
lines.add(new LineItem(Type.ADDED, currLineOfFile2));
lines.add(new LineItem(Type.SAME, nextLineOfFile2));
index2 += 2;
} else if (currLineOfFile1 != null){
lines.add(new LineItem(Type.REMOVED, currLineOfFile1));
}
}
}
private static List<String> writeFileInList(String fileName) throws IOException {
List<String> result = new ArrayList<String>();
try (FileReader reader = new FileReader(fileName)) {
while (reader.ready()) {
String line = "";
char c;
while((c = (char) reader.read()) != '\r') {
if(c == '\n') continue;
line+= c;
if(!reader.ready()) break;
}
result.add(line);
}
}
return result;
}
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;
}
}
}