Не совсем понимаю что валидатору нужно, так как в ide получаю правильный на мой взгляд результат
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;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Знакомство с тегами
*/
public class Solution {
public static void main(String[] args) {
String test = args[0];
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String fileName = "";
try {
fileName = input.readLine();
input.close();
} catch (IOException e) {
e.printStackTrace();
}
String readData = "";
try {
FileReader fileReader = new FileReader(fileName);
while (fileReader.ready()) {
char temp = (char) fileReader.read();
if (temp != '\n' && temp != '\r') {
readData = readData + temp;
}
}
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
ArrayList<Integer> start = new ArrayList<>();
ArrayList<Integer> finish = new ArrayList<>();
Pattern pattern = Pattern.compile("<" + test + "*");
Matcher matcher = pattern.matcher(readData);
while (matcher.find()) {
start.add(matcher.start());
}
pattern = Pattern.compile("</" + test + ">");
matcher = pattern.matcher(readData);
while (matcher.find()) {
finish.add(matcher.start() + 3 + test.length());
}
int count = -1;
while (start.size() > 0) {
for (int j = 0; j < start.size(); j++) {
if (start.get(j) < finish.get(0)) {
count++;
} else {
break;
}
}
System.out.println(readData.substring(start.get(0), finish.get(count)));
finish.remove(count);
start.remove(0);
count = -1;
}
}
}