Вывод совпадает с требованием, но валидация не проходит - "Программа должна выводить в консоль все теги, которые соответствуют тегу, заданному в параметре метода main." Не пойму, что не нравится...
package com.javarush.task.task19.task1918;
/*
Знакомство с тегами
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader name = new BufferedReader(new InputStreamReader(System.in));
String fileName = name.readLine();
name.close();
ArrayList<String> arrayList = new ArrayList<>();
String tag = args[0];
String tagClose = "/" + tag;
String temp;
BufferedReader reader = new BufferedReader(new FileReader(fileName));
StringBuffer buffer = new StringBuffer();
while((temp = reader.readLine()) != null) {
buffer.append(temp);
}
temp = buffer.toString();
reader.close();
for (String str : temp.split("<")) {
if (!str.equals("") && !str.equals("\n") && !str.equals("\r") ) {
arrayList.add(str);
}
}
int[] startArr = new int[arrayList.size()];
int[] endArr = new int[arrayList.size()];
int count = 0;
for (int i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i).contains(tag) && !arrayList.get(i).contains(tagClose)) {
count++;
startArr[i] = count;
} else {
if (arrayList.get(i).contains(tagClose)) {
endArr[i] = count;
count--;
}
}
}
for (int i = 0; i < startArr.length; i++) {
for (int j = i; j < endArr.length; j++) {
if ((startArr[i] != 0) && (startArr[i] == endArr[j])) {
for (int k = i; k <= j; k++) {
System.out.print("<" + arrayList.get(k));
}
System.out.println();
break;
}
}
}
}
}