Наставники, помогите, пожалуйста. Выдача в IDEA правильная.
Что не так с последним пунктом, а именно с операцией ADDED?
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<>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName1 = reader.readLine();
String fileName2 = reader.readLine();
try (BufferedReader fileReader1 = new BufferedReader(new FileReader(fileName1));
BufferedReader fileReader2 = new BufferedReader(new FileReader(fileName2))) {
boolean flag1 = false;
String line1;
String line2;
String line1next = null;
while (fileReader1.ready()) {
if (!flag1) {
line1 = fileReader1.readLine();
} else {
line1 = line1next;
flag1 = false;
}
if (fileReader2.ready()) {
line2 = fileReader2.readLine();
if (line1.equals(line2)) {
lines.add(new LineItem(Type.SAME, line1));
} else if (fileReader2.ready()) {
if (fileReader1.ready()) {
line1next = fileReader1.readLine();
if (line1next.equals(line2)) {
lines.add(new LineItem(Type.REMOVED, line1));
lines.add(new LineItem(Type.SAME, line1next));
} else {
lines.add(new LineItem(Type.ADDED, line2));
lines.add(new LineItem(Type.SAME, line1));
line2 = fileReader2.readLine();
flag1 = true;
}
}
} else {
lines.add(new LineItem(Type.REMOVED, line1));
if (fileReader1.ready()) {
if ((line1 = fileReader1.readLine()).equals(line2)) {
lines.add(new LineItem(Type.SAME, line1));
} else {
lines.add(new LineItem(Type.ADDED, line1));
}
}
}
}
}
if (line1next != null) {
lines.add(new LineItem(Type.REMOVED, line1next));
}
while (fileReader2.ready()) {
line2 = fileReader2.readLine();
lines.add(new LineItem(Type.ADDED, line2));
}
}
reader.close();
}
public 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;
}
@Override
public String toString() {
return type + " " + line;
}
}
}