теряюсь в условии, потом теряюсь в решении. без бубна не разобраться.
JR все больше радует, весело, задорно! Народ хелп плиз!
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>();
private static List<String> file1_lines = new ArrayList<>();//лист для всех строк 1 файла
private static List<String> file2_lines = new ArrayList<>();//лист для всех строк 2 файла\
private static int file1pos=0;// текущая позиция строк во 2м файле во втором файле
private static int file2pos=0;// текущая позиция строк во 2м файле во втором файле
public static void main(String[] args) throws IOException {
int i=0;
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));// ПОДКЛЮЧАЮСЬ К КОНСОЛИ , ДЛЯ ТОГО ЧТОБЫ СЧИТАТЬ СТРОКИ ИМЕН ФАЙЛОВ
String fileName1=reader.readLine();// СЧИТУЮ ИМЯ ФАЙЛА 1 ИЗ КОНСОЛИ
String fileName2=reader.readLine();// СЧИТУЮ ИМЯ ФАЙЛА 2 ИЗ КОНСОЛИ
reader.close(); // ЗАКРЫВАЮ ПОТОК ЧТЕНИЯ ИЗ КОНСОЛИ
BufferedReader file1 = new BufferedReader(new FileReader(fileName1)); // ОТКРЫВАЮ ФАЙЛ 1 ПО ИМЕНИ ФАЙЛА1 ДЛЯ ЧЕТНИЯ
BufferedReader file2 = new BufferedReader(new FileReader(fileName2)); // ОТКРЫВАЮ ФАЙЛ 2 ПО ИМЕНИ ФАЙЛА2 ДЛЯ ЧЕТНИЯ
while (file1.ready()){// ЭТО КОММАНДА ЦИКЛА, ЧТО В СКОБКАХ БУДЕТ ВЫПОЛНЯТСЯ ПОКА ВЕРНО УСЛОВИЯ ФАЙЛ НЕ ДОШЕЛ ДО КОНЦА
file1_lines.add(file1.readLine()); // ДОБАВИТЬ СТРОКУ ИЗ ФАЙЛА В СПИСОК СТРОК file1_lines
}
while (file2.ready()){// ЭТО КОММАНДА ЦИКЛА, ЧТО В СКОБКАХ БУДЕТ ВЫПОЛНЯТСЯ ПОКА ВЕРНО УСЛОВИЯ ФАЙЛ НЕ ДОШЕЛ ДО КОНЦА
file2_lines.add(file2.readLine());// ДОБАВИТЬ СТРОКУ ИЗ ФАЙЛА В СПИСОК СТРОК file2_lines
}
file1.close();
file2.close();
while (file1pos<file1_lines.size()){
lines.add(get_Lines(file1_lines.get(file1pos)));
file1pos++;
}
}
private static LineItem get_Lines(String s){// МОЯ ФУНКЦИЯ КОТОРАЯ БУДЕТ МНЕ ВОХРАЖАЕТ LineItem ДЛЯ СТРОКА Таже, БЫЛА ДОБАВЛЕНА, БЫЛА УДАЛЕНА И ПЕРЕВОДИТ СТРОКУ В ЛИСТАХ СТРОК ФАЙЛОВ
LineItem result=null;
if ( file2pos<file2_lines.size()-1){
if (s.equals(file2_lines.get(file2pos))) {result=new LineItem(Type.SAME,s); file2pos++;} // УСЛОВИя ДЛЯ ВАРИАНТА ЕСЛИ ТЕКУЩАЯ СТРОКА В ФАЙЛАХ РАВНА
else {
if (s.equals(file2_lines.get(file2pos+1))){result=new LineItem(Type.ADDED,file2_lines.get(file2pos)); file2pos=file2pos+2;}
else {result=new LineItem(Type.REMOVED,s);file2pos++;}
}
} else {
if (s.equals(file2_lines.get(file2pos))) {result=new LineItem(Type.SAME,s); file2pos++;}
else {result=new LineItem(Type.REMOVED,s); file2pos=file2pos+1;}
}
return result;
}
public static enum Type {
ADDED, //добавлена новая строка
REMOVED, //удалена строка
SAME //без изменений
}
public static class LineItem {
public Type type;
public String line;
public LineItem(Type type, String lne) {
this.type = type;
this.line = line;
}
}
}