Решение из примеров проходит, какие еще варианты можно загнать в файлы, чтобы найти ошибку или может Валек выеживается.?
Помогите разобраться почему по последнему условию не проходит, говорит, убедитель что операция ADDED добавляется корректно....
ТАк вроде все норм, по крайней мере на примерах
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<LineItem>();
public static void main(String[] args) throws Exception{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file1 = reader.readLine();
String file2 = reader.readLine();
reader.close();
BufferedReader reader1 = new BufferedReader(new FileReader(file1));
BufferedReader reader2 = new BufferedReader(new FileReader(file2));
ArrayList<String> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
while(reader1.ready() || reader2.ready()){
if(reader1.ready()) list1.add(reader1.readLine());
if(reader2.ready()) list2.add(reader2.readLine());
}
reader1.close();
reader2.close();
int iteration = Math.max(list1.size(),list2.size());
for(int i=0;i<=(iteration+1);i++)
{
if (list1.size()>i &&
list2.size()>i &&
(list2.get(i).equals(list1.get(i)))){
lines.add(new LineItem(Type.SAME, list1.get(i)));
//list1.remove(i);
//list2.remove(i);
}
else if(list1.size()>i+1 &&
list2.size()>i &&
list2.get(i).equals(list1.get(i+1))) {
lines.add(new LineItem(Type.REMOVED,list1.get(i)));
lines.add(new LineItem(Type.SAME,list1.get(i+1)));
list2.add(0,null);
i++;
}
else if(list2.size()>i+1 &&
list1.size()>i &&
list2.get(i+1).equals(list1.get(i)))
{
lines.add(new LineItem(Type.ADDED,list2.get(i)));
lines.add(new LineItem(Type.SAME,list2.get(i+1)));
list1.add(0,null);
i++;
}
else if(list2.size()==i && list1.size()>i){
lines.add(new LineItem(Type.REMOVED,list1.get(i)));
}
else if(list1.size()==i && list2.size()>i){
lines.add(new LineItem(Type.ADDED,list2.get(i)));
}
}
//for(LineItem s : Solution.lines)System.out.println(s);
}
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;
}
@Override
public String toString() {
return "LineItem{" +
"type=" + type +
", line='" + line + '\'' +
'}';
}
}
}