package com.javarush.test.level19.lesson10.bonus01;

Мне бы тестовых данных:)
Почему-то не проходит(
/* Отслеживаем изменения
Считать в консоли 2 имени файла — file1, file2.
Файлы содержат строки, file2 является обновленной версией file1, часть строк совпадают.
Нужно создать объединенную версию строк, записать их в список lines
Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME
Пример:
оригинальный редактированный общий
file1: file2: результат:(lines)

строка1 строка1 SAME строка1
строка2 REMOVED строка2
строка3 строка3 SAME строка3
строка4 REMOVED строка4
строка5 строка5 SAME строка5
строка0 ADDED строка0
строка1 строка1 SAME строка1
строка2 REMOVED строка2
строка3 строка3 SAME строка3
строка5 ADDED строка5
строка4 строка4 SAME строка4
строка5 REMOVED строка5
*/


    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName1 = reader.readLine();
        String fileName2 = reader.readLine();

        BufferedReader iReader = new BufferedReader(new FileReader(fileName1));
        BufferedReader iReader2 = new BufferedReader(new FileReader(fileName2));

        ArrayList<String> file1 = new ArrayList<>();
        ArrayList<String> file2 = new ArrayList<>();

        while (iReader.ready()) {
            file1.add(iReader.readLine());
        }
        while (iReader2.ready()) {
            file2.add(iReader2.readLine());
        }

        int i = 0;
        int removed = 0;
        while (file1.size() > i) {
            String line1 = file1.get(i);
            String line2;
            if (file2.size() > i - removed) {
                line2 = file2.get(i - removed);
            }else{
                lines.add(new LineItem(Type.REMOVED, line1));
                break;
            }

            if (line1.equals(line2)) {
                lines.add(new LineItem(Type.SAME, line1));
            } else {
                String line22 = file2.get(i + 1 - removed);
                if (line1.equals(line22)) {
                    lines.add(new LineItem(Type.ADDED, line2));
                    lines.add(new LineItem(Type.SAME, line1));
                    removed--;
                } else {
                    lines.add(new LineItem(Type.REMOVED, line1));
                    removed++;
                }
            }
            i++;
        }


        reader.close();
        iReader.close();
        iReader2.close();
    }

2 комментария

Valdis003
Решено
Archie369
Решали по «исправленному» условию в соседней теме или по оригинальному из задачи?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.