Написал код, работает с моей последовательностью тегов исправно, проверил, отдебажил, как смог. Все равно не принимает мое решение.
Не могу понять, в чем проблема. Кучу времени ломаю голову... Подскажите, пожалуйста.
html последовательность в файле:
Вывод в консоль:
Вывод в консоль:
package com.javarush.task.task19.task1918;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
Знакомство с тегами
*/
public class Solution {
public static void main(String[] args) throws IOException {
String fileName;
String fileContent;
String tag = args[0];
String openTag = String.format("<%s", tag);
String closeTag = String.format("</%s>", tag);
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
fileName = reader.readLine();
}
fileContent = getFileContent(fileName);
System.out.println(fileContent);
printLinesOfTag(fileContent, openTag, closeTag);
}
public static String getFileContent(String fileName) throws IOException {
String fileContent;
StringBuilder readFileContent = new StringBuilder();
try (BufferedReader fileReader = new BufferedReader(new FileReader(fileName))) {
while (fileReader.ready()) {
readFileContent.append(fileReader.readLine());
}
}
fileContent = readFileContent.toString().replaceAll("\\r\\n", "");
return fileContent;
}
public static void printLinesOfTag(String fileContent, String openTag, String closeTag) {
if (fileContent.contains(openTag) && fileContent.contains(closeTag)) {
int indexOfOpen = fileContent.indexOf(openTag);
int indexOfClose = fileContent.indexOf(closeTag);
int finalIndexOfOpen = indexOfOpen;
while (true) {
int nextIndexOfOpen = fileContent.indexOf(openTag, indexOfOpen + 1);
int nextIndexOfClose = fileContent.indexOf(closeTag, indexOfClose + 1);
if (nextIndexOfOpen != -1) {
if (nextIndexOfOpen < indexOfClose) {
indexOfClose = nextIndexOfClose;
indexOfOpen = nextIndexOfOpen;
} else {
System.out.println(fileContent.substring(finalIndexOfOpen, indexOfClose) + closeTag);
String tagLine = fileContent.substring(finalIndexOfOpen, indexOfClose) + closeTag;
checkTagLine(tagLine, openTag, closeTag);
indexOfOpen = nextIndexOfOpen;
finalIndexOfOpen = indexOfOpen;
indexOfClose = nextIndexOfClose;
}
} else {
if (nextIndexOfClose != -1) {
indexOfClose = nextIndexOfClose;
} else {
System.out.println(fileContent.substring(finalIndexOfOpen, indexOfClose) + closeTag);
String tagLine = fileContent.substring(finalIndexOfOpen, indexOfClose) + closeTag;
checkTagLine(tagLine, openTag, closeTag);
break;
}
}
}
}
}
public static void checkTagLine(String tagLine, String openTag, String closeTag) {
int indexOfOpen = tagLine.indexOf(openTag);
tagLine = tagLine.substring(indexOfOpen + openTag.length(), tagLine.length() - closeTag.length());
printLinesOfTag(tagLine, openTag, closeTag);
}
}