I don't understand why last condition isn't met. With my test files works perfectly.
package pl.codegym.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;
/*
Śledzenie zmian
*/
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));
List<String> leftFile = new ArrayList<>();
List<String> rightFile = new ArrayList<>();
BufferedReader scannerLeftFile = new BufferedReader(new FileReader(reader.readLine()));
BufferedReader scannerRightFile = new BufferedReader(new FileReader(reader.readLine()));
while (scannerLeftFile.ready()) {
String t = scannerLeftFile.readLine();
if (!t.equals("")) {
leftFile.add(t);
}
}
while (scannerRightFile.ready()) {
String t = scannerRightFile.readLine();
if (!t.equals("")) {
rightFile.add(t);
}
}
reader.close();
scannerLeftFile.close();
scannerRightFile.close();
int r = 0;
for (int l = 0; l < leftFile.size(); l++) {
String left = leftFile.get(l);
String right = null;
int startR = r;
while (r < rightFile.size() && r < l + 1 && !left.equals(right)) {
right = rightFile.get(r++);
}
if (left.equals(right)) {
for (int aR = startR; aR < r - 1; aR++) {
lines.add(new LineItem(Type.ADDED, rightFile.get(aR)));
}
lines.add(new LineItem(Type.SAME, left));
} else {
lines.add(new LineItem(Type.REMOVED, left));
r = startR;
}
}
// for (LineItem lineItem: lines) {
// System.out.println(lineItem);
// }
}
public static enum Type {
ADDED, // Dodana nowa linia
REMOVED, // Linia usunięta
SAME // Bez zmian
}
public static class LineItem {
private Type type;
private String line;
public LineItem(Type type, String line) {
this.type = type;
this.line = line;
}
@Override
public String toString() {
if (type.equals(Type.ADDED)) {
return "ADDED " + line;
} else if (type.equals(Type.REMOVED)) {
return "REMOVED " + line;
} else {
return "SAME " + line;
}
}
}
}