Добрый день.
Валидатор не принимает последний пункт , хотя по двум примерам из описания задачи, код возвращает верный результат
Разработчикам просьба ответить что не так.
С уважением.
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) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
String f1 = reader.readLine();
String f2 = reader.readLine();
FileReader fileReader1 = new FileReader(f1);
FileReader fileReader2 = new FileReader(f2);
String f1_text = "", f2_text = "";
while (fileReader1.ready()) f1_text += (char) fileReader1.read();
while (fileReader2.ready()) f2_text += (char) fileReader2.read();
List<String> f1_text_arr = new ArrayList<>();
List<String> f2_text_arr = new ArrayList<>();
for (String s : f1_text.replaceAll("(\\n\\r)|(\\r\\n)|(\\n)", "\r").split("\r")) f1_text_arr.add(s);
for (String s : f2_text.replaceAll("(\\n\\r)|(\\r\\n)|(\\n)", "\r").split("\r")) f2_text_arr.add(s);
if (f1_text_arr.size() >= f2_text_arr.size()) {
for (int i = 0; i < f1_text_arr.size(); i++) {
try {
if (!f1_text_arr.get(i).equalsIgnoreCase(f2_text_arr.get(i))) {
if (f1_text_arr.size() > f2_text_arr.size()) {
f2_text_arr.add(i, "");
} else if (f1_text_arr.size() <= f2_text_arr.size()) {
f1_text_arr.add(i, "");
}
}
} catch (IndexOutOfBoundsException e) {
f2_text_arr.add(i, "");
}
}
} else {
for (int i = 0; i < f2_text_arr.size(); i++) {
try {
if (!f2_text_arr.get(i).equalsIgnoreCase(f1_text_arr.get(i))) {
if (f2_text_arr.size() > f1_text_arr.size()) f1_text_arr.add(i, "");
else if (f2_text_arr.size() <= f1_text_arr.size()) f2_text_arr.add(i, "");
}
} catch (IndexOutOfBoundsException e) {
f1_text_arr.add(i, "");
}
}
}
for (int i = 0; i < f1_text_arr.size(); i++) {
try {
if (f1_text_arr.get(i).equalsIgnoreCase(f2_text_arr.get(i)))
lines.add(new LineItem(Type.SAME, f1_text_arr.get(i)));
else if (f1_text_arr.get(i).length() == 0)
lines.add(new LineItem(Type.ADDED, f2_text_arr.get(i)));
else if (f2_text_arr.get(i).length() == 0)
lines.add(new LineItem(Type.REMOVED, f1_text_arr.get(i)));
} catch (Exception e) {
e.printStackTrace();
}
}
// for (LineItem i : lines) {
// System.out.printf("%s %s", i.type, i.line);
// System.out.println();
// }
fileReader1.close();
fileReader2.close();
reader.close();
} 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;
}
}
}