Валидатор выдает ошибку "Программа должна выводить в консоль все теги, которые соответствуют тегу, заданному в параметре метода 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.Stack;
public class Solution {
public static void main(String[] args) throws IOException {
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
FileReader fr = new FileReader(br.readLine())) {
StringBuilder sb = new StringBuilder();
try (BufferedReader br2 = new BufferedReader(fr)) {
while (br2.ready()) sb.append(br2.readLine());
}
String tag = args[0];
int openTagIndex, closeTagIndex, i = 0;
Stack<Integer> stack = new Stack<>();
while (true) {
openTagIndex = sb.indexOf("<" + tag, i);
closeTagIndex = sb.indexOf("</" + tag + ">", i);
//если нет больше найденных тегов - break
if (openTagIndex < 0 & closeTagIndex < 0) break;
//если встретили откр тэг раньше закрывающегося - кладем индекс откр тэга в стэк
if (openTagIndex >= 0 && openTagIndex < closeTagIndex) {
stack.push(openTagIndex);
//смещаем позицию на 1
i = openTagIndex + 1;
} else {
//встретили закрывающийся тэг, находим индекс открывающегося тэга и выводим в консоль
// + 3 - это длина символов закрывающгося тэга </> плюс сама длина тэга
i = closeTagIndex + tag.length() + 3;
System.out.println(sb.substring(stack.pop(), i));
}
}
}
}
}