Я протестировал на реальных файлах в которые сложил все как в условии и выводит все В ТОЧНОСТИ! Без Ошибок!!! Потому считаю что я молодец, додумался сам до схемы и задание выполнил как требуется. Единственный косяк, который я не додумался как обыграть, это в цикле for вручную поставил 12, я еще подумаю как сделать в этом цикле так, чтоб любой длины файлы жрал. Решение, угодное валидатору, будь он не ладен, придется подсмотреть у кого-нибудь. НО долбанные потоки, через раз валидатор их не жрет. ЧТО С НИМИ НЕ ТАК??? Я как-то не так или не там закрываю? BufferedReaderы тоже добавлял пол файлридерами, все равно не жрет, что не так?
package com.javarush.task.task19.task1916;
import org.w3c.dom.ls.LSOutput;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
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 {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
FileReader fileReader = new FileReader(bufferedReader.readLine());
FileReader fileReader2 = new FileReader(bufferedReader.readLine());
bufferedReader.close();
BufferedReader bufferedReader1 = new BufferedReader(fileReader);
BufferedReader bufferedReader2 = new BufferedReader(fileReader2);
List<Integer> list = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
while (bufferedReader1.ready()){
String s = bufferedReader1.readLine();
s= s.replaceAll("строка","");
int a = Integer.parseInt(s);
list.add(a);
}
fileReader.close();
bufferedReader1.close();
System.out.println(list);
while (bufferedReader2.ready()){
String s = bufferedReader2.readLine();
s= s.replaceAll("строка","");
int a = Integer.parseInt(s);
list2.add(a);
}
fileReader2.close();
bufferedReader2.close();
System.out.println(list2);
int list1index=0;
int list2index=0;
for (int i = 0; i<12 ; i++) {
if((list2index > list2.size()-1)){
String str = "строка"+list.get(list1index);
lines.add(new LineItem(Type.REMOVED,str));
list1index++;
}else if(list.get(list1index).equals(list2.get(list2index))){
String str = "строка"+list.get(list1index);
lines.add(new LineItem(Type.SAME,str));
list1index++;
list2index++;
}else if(list.get(list1index) < list2.get(list2index)){
String str = "строка"+list.get(list1index);
lines.add(new LineItem(Type.REMOVED,str));
list1index++;
}else if(list.get(list1index) > list2.get(list2index)){
String str = "строка"+list2.get(list2index);
lines.add(new LineItem(Type.ADDED,str));
list2index++;
}
}
for (LineItem line : lines) {
System.out.println(line.type +" "+ line.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;
}
}
}