В intellij idea задача вроде работает правильно, но при проверке валидатор ругается на возможный бесконечный цикл. Не могу понять в чём проблема. Подскажите пожалуйста.
package com.javarush.task.task19.task1916;
import java.io.*;
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 ArrayList<String> readFiles(String fileName){
ArrayList<String> fileLines = new ArrayList<>();
try (FileReader fileReader = new FileReader(fileName)) {
Scanner scanner = new Scanner(fileReader);
while (scanner.hasNextLine()){
fileLines.add(scanner.nextLine());
}
fileReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return fileLines;
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file1 = reader.readLine();
String file2 = reader.readLine();
reader.close();
ArrayList<String> file1Lines = readFiles(file1);
ArrayList<String> file2Lines = readFiles(file2);
int min = Math.min(file1Lines.size(), file2Lines.size());
for (int i = 0; i < min; i++) {
String s1 = file1Lines.get(i);
String s2 = file2Lines.get(i);
if (s1.equals(s2)) {
lines.add(new LineItem(Type.SAME, s1));
}
else if (s1.equals(file2Lines.get(i+1))){
lines.add(new LineItem(Type.ADDED, s2));
file1Lines.add(i,"");
}
else if (s2.equals(file1Lines.get(i+1))){
lines.add(new LineItem(Type.REMOVED, s1));
file2Lines.add(i,"");
}
min = Math.min(file1Lines.size(), file2Lines.size());
}
if (file1Lines.size()>min) lines.add(new LineItem(Type.REMOVED, file1Lines.get(min)));
else if (file2Lines.size()>min) lines.add(new LineItem(Type.ADDED, file2Lines.get(min)));
}
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;
}
}
}