Валидатор вначале не принимал по последнему пункту, а теперь вообще не понимает что накодировано.
Подскажите, что не так
package com.javarush.task.task19.task1916;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
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 Exception{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// D:\\javaRush_txt\\task1916_read_orig.txt
FileReader fileReader1 = new FileReader(reader.readLine());
// D:\\javaRush_txt\\task1916_read_edited.txt
FileReader fileReader2 = new FileReader(reader.readLine());
reader.close();
//BufferedReader reader1 = new BufferedReader(fileReader1); // не принимает валидатор
//BufferedReader reader2 = new BufferedReader(fileReader2);
ArrayList<String> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
String currLine = "";
while (fileReader1.ready()) {
int data = fileReader1.read();
if ((char) data == '\r') {
list1.add(currLine);
currLine = "";
} //else if ((char) data == '\n');
else currLine += (char) data;
}
list1.add(currLine);
fileReader1.close();
currLine = "";
while (fileReader2.ready()) {
int data = fileReader2.read();
if ((char) data == '\r') {
list2.add(currLine);
currLine = "";
} //else if ((char) data == '\n');
else currLine += (char) data;
}
list2.add(currLine);
fileReader2.close();
int i = 0;
String list1CurrLine = "";
String list1NextLine = "";
String list2CurrLine = "";
String list2NextLine = "";
boolean theSame = true;
while (true) {
if (list1.isEmpty() && list2.isEmpty()) break;
if (list1.isEmpty()) {
list1CurrLine = "";
list1NextLine = "";
} else {
list1CurrLine = list1.get(i);
if (i < list1.size() - 1) {
list1NextLine = list1.get(i+1);
} else list1NextLine = "";
}
if (list2.isEmpty()) {
list2CurrLine = "";
list2NextLine = "";
} else {
list2CurrLine = list2.get(i);
if (i < list2.size() - 1) {
list2NextLine = list2.get(i+1);
} else list2NextLine = "";
}
if (list1CurrLine.equals(list2CurrLine)) {
lines.add(new LineItem (Type.SAME, list1CurrLine));
theSame = true;
list1.remove(i);
list2.remove(i);
} else if (theSame){
if (list1CurrLine.equals(list2NextLine)){
lines.add(new LineItem (Type.ADDED, list2CurrLine));
list2.remove(i);
theSame = false;
} else if (list2CurrLine.equals(list1NextLine)) {
lines.add(new LineItem (Type.REMOVED, list1CurrLine));
list1.remove(i);
theSame = false;
}
}
}
for (int j = 0; j < lines.size(); j++) {
System.out.println(lines.get(j).type + " " + lines.get(j).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;
}
}
}