Выдает ошибку по последнему пункту(кто бы сомневался), хотя тестирую и и вроде код рабочий, что не так?? кому не лень смотреть мой говнокод,буду признателен за помощь!
package com.javarush.task.task19.task1916;
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 List<String> lines1 = new ArrayList<String>();
public static List<String> lines2 = new ArrayList<String>();
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){
String file1 = reader.readLine();
String file2 = reader.readLine();
BufferedReader reader1 = new BufferedReader(new FileReader(file1));
BufferedReader reader2 = new BufferedReader(new FileReader(file2));
while (reader1.ready()){
lines1.add(reader1.readLine());
}
while (reader2.ready()){
lines2.add(reader2.readLine());
}
reader1.close();
reader2.close();
if(lines1.size()>lines2.size()){
for(int i = lines2.size();i<lines1.size();i++){
lines2.add("");
}
}else if(lines1.size()<lines2.size()){
for(int i = lines1.size();i<lines2.size();i++){
lines1.add("");
}
}
//System.out.println(lines1.size());
int i2=0;
for (int i1 =0;i1<lines1.size();) {
String s1=lines1.get(i1);
//System.out.println(i1+" "+i2);
if(i2==lines2.size()){break;}
if(s1.equals("")||lines2.get(i2).equals("")){
if(s1.equals("")){
lines.add(new LineItem(Type.ADDED,lines2.get(i2)));
//System.out.println("add");
}else{
lines.add(new LineItem(Type.REMOVED,s1));
//System.out.println("rem");
}
break;
}
if(s1.equals(lines2.get(i2))){
lines.add(new LineItem(Type.SAME,s1));
i2++;
i1++;
// System.out.println("SAME");
}else if(s1.equals(lines2.get(i2+1))){
lines.add(new LineItem(Type.ADDED,lines2.get(i2)));
i2++;
// System.out.println("ADDED");
}else {
lines.add(new LineItem(Type.REMOVED,s1));
i1++;
// System.out.println("REM");
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
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;
}
}
}
// /Users/ilyababashin/Desktop/log2.txt
// /Users/ilyababashin/Desktop/log3.txt