Проверяла на разных вариантах, код рабочий. Ругается на последний пункт
6ой пункт уже исправлен (два раза нечаянно поток закрывала)
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;
import java.util.Scanner;
/*
Отслеживаем изменения
*/
public class Solution {
public static List<LineItem> lines = new ArrayList<LineItem>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileOne = reader.readLine(), fileTwo = reader.readLine();
reader.close();
BufferedReader file1 = new BufferedReader(new FileReader(fileOne));
BufferedReader file2 = new BufferedReader(new FileReader(fileTwo));
ArrayList<String> arr1 = new ArrayList<>();
ArrayList<String> arr2 = new ArrayList<>();
reader.close();
while (file1.ready()) {
arr1.add(file1.readLine());
}
file1.close();
while (file2.ready()) {
arr2.add(file2.readLine());
}
file2.close();
int s1 = arr1.size();
int s2 = arr2.size();
try {
int a1 = 0;
while (arr1.size() > 0 && arr2.size() > 0) {
if (arr1.get(a1).equals(arr2.get(0))) {
lines.add(new LineItem(Type.SAME, arr1.get(a1)));
a1++;
arr2.remove(0);
} else if (arr1.get(a1).equals(arr2.get(1))) {
lines.add(new LineItem(Type.ADDED, arr2.get(0)));
arr2.remove(0);
} else {
lines.add(new LineItem(Type.REMOVED, arr1.get(a1)));
a1++;
}
}
}
catch (Exception e)
{
if (s1 > s2)
lines.add(new LineItem(Type.REMOVED, arr1.get(arr1.size()-1)));
else
lines.add(new LineItem(Type.ADDED, arr2.get(0)));
}
/*for (LineItem li : lines)
System.out.println(li.toString());*/
}
public static enum Type {
ADDED, //добавлена новая строка
REMOVED, //удалена строка
SAME //без изменений
}
public static class LineItem {
@Override
public String toString() {
return this.type+" "+this.line;
}
public Type type;
public String line;
public LineItem(Type type, String line) {
this.type = type;
this.line = line;
}
}
}