is it the try\catch block that's keeping it from validating?
package com.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;
/*
Tracking changes
*/
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 file1 = reader.readLine();
String file2 = reader.readLine();
reader.close();
ArrayList<String> originalFile = new ArrayList<>();
ArrayList<String> updatedFile = new ArrayList<>();
BufferedReader reader2 = new BufferedReader(new FileReader(file1));
BufferedReader reader3 = new BufferedReader(new FileReader(file2));
while (reader2.ready()) {
originalFile.add(reader2.readLine());
}
while (reader3.ready()) {
updatedFile.add(reader3.readLine());
}
reader2.close();
reader3.close();
int a = 0;
while (!originalFile.isEmpty() && !updatedFile.isEmpty()) {
if (originalFile.get(a).equals(updatedFile.get(a))) {
lines.add(new LineItem(Type.SAME, originalFile.get(a)));
originalFile.remove(a);
updatedFile.remove(a);
//System.out.println("got here");
} else {
try {
if (originalFile.get(a).equals(updatedFile.get(a + 1))) {
lines.add(new LineItem(Type.ADDED, updatedFile.get(a)));
lines.add(new LineItem(Type.SAME, originalFile.get(a)));
originalFile.remove(a);
updatedFile.remove(a);
updatedFile.remove(a);
//System.out.println("got");
}
if (originalFile.get(a + 1).equals(updatedFile.get(a))) {
lines.add(new LineItem(Type.REMOVED, originalFile.get(a)));
lines.add(new LineItem(Type.SAME, updatedFile.get(a)));
originalFile.remove(a);
updatedFile.remove(a);
originalFile.remove(a);
//System.out.println("tp");
}
} catch (IndexOutOfBoundsException ignored) {
}
}
}
/*for (LineItem lineItem : lines) {
System.out.println(lineItem.line + lineItem.type.toString());
}*/
/*for (int i = 0, i1 = 0, i2 = 1; i < originalFile.size() || i1 < updatedFile.size() && i2 < originalFile.size() && i2 < updatedFile.size(); i++, i1++, i2++) {
try {
if (originalFile.get(i).equals(updatedFile.get(i1))) {
lines.add(new LineItem(Type.SAME, originalFile.get(i)));
} else {
if (originalFile.get(i).equals(updatedFile.get(i2))) {
lines.add(new LineItem(Type.ADDED, updatedFile.get(i1)));
lines.add(new LineItem(Type.SAME, originalFile.get(i)));
i1++;
}
if (originalFile.get(i2).equals(updatedFile.get(i1))) {
lines.add(new LineItem(Type.REMOVED, originalFile.get(i)));
lines.add(new LineItem(Type.SAME, updatedFile.get(i2)));
i++;
}
}
}catch (IndexOutOfBoundsException e) {
break;
}
}
for (String s: originalFile
) {
System.out.println(s);
}
for (String s: updatedFile
) {
System.out.println(s);
}
for (LineItem lineItem: lines
) {
System.out.println(lineItem.line + lineItem.type.toString());
}*/
}
public static enum Type {
ADDED, // New line added
REMOVED, // Line deleted
SAME // No change
}
public static class LineItem {
public Type type;
public String line;
public LineItem(Type type, String line) {
this.type = type;
this.line = line;
}
}
}