Валидатор пишет ошибку, предлагает такой тест :
Проверь вывод тегов из следующего примера: .
Этот тест у меня проходит, не понимаю, что ему не нравится((
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.ArrayList;
/*
Знакомство с тегами
*/
public class Solution {
public static void main(String[] args) throws IOException {
String fileName;
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
fileName = reader.readLine();
}
try (BufferedReader fileReader = new BufferedReader(new FileReader(fileName))) {
ArrayList<Character> fileContent = new ArrayList<>();
while (fileReader.ready()) {
fileContent.add((char) fileReader.read());
}
StringBuilder sb = new StringBuilder();
char[] inputTag = args[0].toCharArray();
ArrayList<String> result = new ArrayList<>();
int openTag = 0;
for (int i = 0; i < fileContent.size(); i++) {
if (fileContent.get(i) == '/') {
//checking for match with input
StringBuilder sbBuffer = new StringBuilder();
for (char c : inputTag) {
if (fileContent.get(i + 1) == c) {
sbBuffer.append(fileContent.get(i + 1));
i++;
} else {
sb.append("</").append(sbBuffer);
sbBuffer = new StringBuilder();
break;
}
}
//if matched, closing tag
if (sbBuffer.length() == inputTag.length) {
sb.append("</").append(sbBuffer).append(">");
openTag--;
//if there is no open tag, adding data to result list
if (openTag == 0) {
result.add(sb.toString());
sb = new StringBuilder();
}
i+=2;
if (i == fileContent.size()) break;
}
}
//checking if we have needed tag open
if (openTag > 0) {
if (fileContent.get(i) != '\n'
&& fileContent.get(i) != '\r'
&& fileContent.get(i) != '<'
&& fileContent.get(i) != '/'
) {
sb.append(fileContent.get(i));
}
}
if (fileContent.get(i) == '<') {
//checking for match with input
StringBuilder sbBuffer = new StringBuilder();
for (char c : inputTag) {
if (fileContent.get(i + 1) == c) {
sbBuffer.append(fileContent.get(i + 1));
i++;
} else {
sbBuffer = new StringBuilder();
break;
}
}
//if match starting to store data
if (sbBuffer.length() == inputTag.length) {
if (fileContent.get(i+1) == '\n') {
sb.append("<").append(sbBuffer).append(" ");
} else {
sb.append("<").append(sbBuffer);
}
openTag++;
}
}
}
result.forEach(System.out::println);
}
}
}