Подскажите где ошибка.
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;
/*
Отслеживаем изменения
*/
//C:\Users\Stas\Desktop\222.txt
public class Solution {
public static List<LineItem> lines = new ArrayList<LineItem>();
public static void main(String[] args) throws Exception {
ArrayList<String> gap = new ArrayList<>();
ArrayList<String> gap2 = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file1 = reader.readLine();
String file2 = reader.readLine();
reader.close();
FileReader reader1 = new FileReader(file1);
FileReader reader2 = new FileReader(file2);
BufferedReader buffreader = new BufferedReader(reader1);
BufferedReader buffreader2 = new BufferedReader(reader2);
String from1;
String from2;
while ((from1 = buffreader.readLine()) != null) {
gap.add(from1);
}
while((from2= buffreader2.readLine()) != null){
gap2.add(from2);
}
int l1 = Math.max(gap.size(),gap2.size());
for (int i = 0; i< l1;i++){
try {
String item = gap.get(i);
String item2 = gap2.get(i);
if (item.equals(item2)){
lines.add(new LineItem(Type.SAME,item));
}else if (!item.equals(item2) && item2.length() == 0 ){
lines.add(new LineItem(Type.REMOVED, item));
}else if (!item.equals(item2) && item.length() == 0 ){
lines.add(new LineItem(Type.ADDED,item2));
}
} catch (Exception e) {
if (gap.size() > gap2.size()){
lines.add(new LineItem(Type.ADDED,gap.get(i)));
}else lines.add(new LineItem(Type.ADDED,gap2.get(i)));
}
}
lines.forEach(el-> System.out.println(el.line + el.type));
buffreader.close();
buffreader2.close();
reader1.close();
reader2.close();
}
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;
}
}
}
И да , почему же разработчик задачи не может сразу условия поставить как надо ?
Я правильно понимаю логику задания ?
Я вижу что в общем результате должно получиться 12 элементов .
Но в первом файле у нас 10 элементов .
Я не понимаю...
Но так же у нас в условии поставлено : Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME.
Тогда String 5 , String 0. не могут быть Added , так как они идут вместе и не разделены Same .
Какой тут алгоритм добавления в список lines ? Я не понимаю !
Вот это выдаёт !