Валидатор говорит что: похоже вы используете бесконечный цикл.
На примере из описания задачи все отрабатывает моментально.
Может на каком то варианте зацикливается. Не могу разобраться.
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 void main(String[] args) {
String file1 = "file1";
String file2 = "file2";
try(BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in))) {
file1 = consoleReader.readLine();
file2 = consoleReader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
List<String> strings1 = new ArrayList<>();
List<String> strings2 = new ArrayList<>();
try(BufferedReader fileReader1 = new BufferedReader(new FileReader(file1));
BufferedReader fileReader2 = new BufferedReader(new FileReader(file2))) {
while (fileReader1.ready()) {
strings1.add(fileReader1.readLine());
}
while (fileReader2.ready()) {
strings2.add(fileReader2.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}
boolean skipString1 = false;
boolean skipString2 = false;
String string1 = "";
String string2 = "";
int stringNumber1;
int stringNumber2;
int index1 = 0;
int index2 = 0;
boolean isBreak = false;
while (!isBreak) {
if (!skipString1 && index1 != strings1.size()) {
string1 = strings1.get(index1);
index1++;
}
if (!skipString2 && index2 != strings2.size()) {
string2 = strings2.get(index2);
index2++;
}
stringNumber1 = Integer.parseInt(string1.substring(string1.length() - 1));
stringNumber2 = Integer.parseInt(string2.substring(string2.length() - 1));
if (stringNumber1 < stringNumber2) {
lines.add(new LineItem(Type.REMOVED, string1));
skipString2 = true;
} else if (stringNumber1 > stringNumber2) {
lines.add(new LineItem(Type.ADDED, string2));
skipString1 = true;
} else {
lines.add(new LineItem(Type.SAME, string1));
skipString1 = false;
skipString2 = false;
}
if (index1 == strings1.size() && index2 == strings2.size()) {
isBreak = true;
}
}
// for (LineItem item : lines) {
// System.out.println(item.type + " " + item.line);
// }
}
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;
}
}
}