Программа отрабатывает правильно, но валидатор не проходит, помогите пожалуйста!
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 {
ArrayList<String> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
ArrayList<String> list3 = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file1 = reader.readLine();
String file2 = reader.readLine();
reader.close();
BufferedReader bufferedReader1 = new BufferedReader(new FileReader(file1));
BufferedReader bufferedReader2 = new BufferedReader(new FileReader(file2));
String str;
LineItem swap;
int n =0,k=0,l=0;
boolean b = false, c=false;
while (bufferedReader1.ready()) {
str = bufferedReader1.readLine();
list1.add(str);
}
bufferedReader1.close();
while (bufferedReader2.ready()) {
str = bufferedReader2.readLine();
list2.add(str);
}
bufferedReader2.close();
/*for(int i=0;i<list1.size(); i++)list3.add("");
for (int i=0; i<list2.size();i++){
for (int j=0;j<list1.size();j++)
if(list2.get(i).equals(list1.get(j))) {list3.set(j,list2.get(i));break;}
}
for(int i=0;i<list2.size();i++) {
b = false;
for (int j = 0; j < list1.size(); j++)
if (list1.get(j).equals(list2.get(i))) {
b = true;
break;
}
if (!b) for (int j = 0; j < list3.size(); j++) if (list3.get(j).equals("")) {list3.set(j, list2.get(i));break;}
}
for(int i=0; i<list3.size();i++) System.out.println(list3.get(i) +":"+ list1.get(i));*/
for (int i = 0; i < list2.size(); i++) {
b = false;
for (int j = n; j < list1.size(); j++)
{
if (list1.get(j).equals(list2.get(i))) {
lines.add(new LineItem(Type.SAME, list1.get(j)));
b = true;l=n;n=j;
break;}}
if(b) for(int j=l+1 ; j<n; j++) lines.add(new LineItem(Type.REMOVED,list1.get(j)));
if(!b) lines.add(new LineItem(Type.ADDED, list2.get(i)));
}
/* for(int i=0; i<list1.size();i++) if (list3.get(i).equals("")) lines.add(new LineItem(Type.REMOVED, list1.get(i)));
else if (!list3.get(i).equals(list1.get(i))) { lines.add(new LineItem(Type.REMOVED, list1.get(i)));lines.add(new LineItem(Type.ADDED,list3.get(i)));}
else lines.add(new LineItem(Type.SAME,list1.get(i)));}*/
//for(int i=0; i<lines.size(); i++) System.out.println(lines.get(i).type+" : "+lines.get(i).line);
/*for (int i = 0; i<lines.size()-1; i++)
if ((lines.get(i).type != Type.SAME) && lines.get(i + 1).type != Type.SAME)
for (int j = i; j < lines.size(); j++)
if (lines.get(j).type == Type.SAME) {
swap=lines.get(j);
lines.remove(j);
lines.add(i+1, swap);
break;}*/
//for(int i=0; i<lines.size(); i++) System.out.println(lines.get(i).type+" : "+lines.get(i).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;
}
}
}