Привет всем !
Прошелся по кейсам в предыдущих вопросах по этой задаче, вроде работает.
Но валидатор ругается.
package com.javarush.task.task19.task1916;
import java.io.*;
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 {
String file1;
String file2;
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
// file1 = "C:\\Users\\gasparianvd\\Desktop\\Test1.txt";
// file2 = "C:\\Users\\gasparianvd\\Desktop\\Test2.txt";
file1 = reader.readLine();
file2 = reader.readLine();
}
ArrayList<String> fileList1;
ArrayList<String> fileList2;
try (BufferedReader fileReader1 = new BufferedReader(new FileReader(file1));
BufferedReader fileReader2 = new BufferedReader(new FileReader(file2))) {
fileList1 = new ArrayList<>();
fileList2 = new ArrayList<>();
while (fileReader1.ready()) {
fileList1.add(fileReader1.readLine());
}
while (fileReader2.ready()) {
fileList2.add(fileReader2.readLine());
}
}
while (!fileList1.isEmpty() || !fileList2.isEmpty()) {
if (fileList1.get(0).equals(fileList2.get(0))) {
lines.add(new LineItem(Type.SAME, fileList1.get(0)));
fileList1.remove(0);
fileList2.remove(0);
} else if (fileList2.size() >= 2 && fileList1.get(0).equals(fileList2.get(1))) {
lines.add(new LineItem(Type.ADDED, fileList2.get(0)));
fileList2.remove(0);
} else if (fileList1.size() >= 2 && fileList1.get(1).equals(fileList2.get(0))) {
lines.add(new LineItem(Type.REMOVED, fileList1.get(0)));
fileList1.remove(0);
}
}
if (!fileList1.isEmpty()) {
for (String s : fileList1) {
lines.add(new LineItem(Type.REMOVED, s));
}
}
if (!fileList2.isEmpty()) {
for (String s : fileList2) {
lines.add(new LineItem(Type.ADDED, s));
}
}
// for (LineItem l : lines) {
// System.out.println(l.type + " " + l.line);
// }
}
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;
}
}
}