смотрите комментарии в строках 39-41
еще, если в цикле for в 40 строке поставить знак <=, то тоже работает как надо
ну если все сделать как надо, то все равно не проходит валидатор. помогите
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) throws IOException {
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
String fileName1 = r.readLine();
String fileName2 = r.readLine();
r.close();
ArrayList<String> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
BufferedReader br1 = new BufferedReader(new FileReader(fileName1));
BufferedReader br2 = new BufferedReader(new FileReader(fileName2));
String line1 = null;
while ((line1 = br1.readLine()) != null) {
list1.add(line1);
}
String line2 = null;
while ((line2 = br2.readLine()) != null) {
list2.add(line2);
}
br1.close();
br2.close();
//System.out.println((list1.size()-list2.size()));
if (list1.size() > list2.size()){ //list1.size() = 12, list2.size() = 10
for (int i = 0; i<(list1.size()-list2.size()); i++) //почему проходит только одна итерация и list2.size() на выходе = 11?
list2.add(""); // но если условие i < 2, то работает норм и на выходе размер = 12.
} else {
for (int i = 0; i<(list2.size()-list1.size()); i++)
list1.add("");
}
int iter = list1.size() > list2.size() ? list1.size() : list2.size();
for (int i = 0; i < iter; i++) {
String s1 = " " + list1.get(i);
String s2 = " " + list2.get(i);
if (s1.equals(s2)) {
lines.add(new LineItem(Type.SAME, s1));
} else if (s1.length()<s2.length()) {
lines.add(new LineItem(Type.ADDED, s2));
} else if (s1.length()>s2.length()) {
lines.add(new LineItem(Type.REMOVED, s1));
}
}
for (LineItem l: lines) {
System.out.println(l);
}
}
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;
}
/* @Override
public String toString() {
return this.type.toString() + this.line;
}*/
}
}