Видел что многие используют Jsoup. Ну раз не проходили решил без него. Результат соответствует. Проверял с двумя вложенными тэгами.
Если проблема в отсутствии Jsoup то может стоит это в задании прописать!
Обновить код не получилось поэтому актуальный код ниже
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 begintag = "<" + args[0];
String endtag = "</" + args[0] + ">";
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
reader.close();
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
StringBuilder bsline = new StringBuilder();
while (bufferedReader.ready()) {
bsline.append(bufferedReader.readLine());
}
bufferedReader.close();
String line = " "+bsline.toString(); //весь файл преобразовал в строку и добавил пробел в начало, хз почему без этого не работает, есть там какой то символ
ArrayList<Integer> beginTagInt = new ArrayList<>(); //лист для индексов открывающего тэга
ArrayList<Integer> endTagInt = new ArrayList<>(); //лист для индексов закрывающего тэга
ArrayList<String> str = new ArrayList<>(); //лист для результата
String line2 = line; //временная переменная от которой буду отрезать куски
int aaa = line2.indexOf(begintag);
int bbb = 0;
while (aaa > 0) {// заполняем первый лист
if (beginTagInt.size() == 0) bbb += aaa;
else bbb += aaa + begintag.length();
beginTagInt.add(bbb);
line2 = line2.substring(line2.indexOf(begintag) + begintag.length());
aaa = line2.indexOf(begintag);
}
line2 = line;
aaa = line2.indexOf(endtag);
bbb = 0;
while (aaa > 0) {// заполняем второй лист
if (endTagInt.size() == 0) bbb += aaa;
else bbb += aaa + endtag.length() - 1;
endTagInt.add(bbb);
line2 = line2.substring(line2.indexOf(endtag) + endtag.length() - 1);
aaa = line2.indexOf(endtag);
}
int d = 0;
while (beginTagInt.size() > 1) {
if (d==beginTagInt.size()-1){
str.add(line.substring(beginTagInt.get(0), endTagInt.get(d) + endtag.length()));
beginTagInt.remove(0);
endTagInt.remove(d);
d = 0;
}
if (beginTagInt.size()==1){
str.add(line.substring(beginTagInt.get(0), endTagInt.get(0) + endtag.length()));
break;
}
if (beginTagInt.get(d + 1) > endTagInt.get(0)) {
str.add(line.substring(beginTagInt.get(0), endTagInt.get(d) + endtag.length()));
beginTagInt.remove(0);
endTagInt.remove(d);
d = 0;
} else d++;
}
if (beginTagInt.size()==1){
str.add(line.substring(beginTagInt.get(0), endTagInt.get(0) + endtag.length()));
} // добавляем последний элемент
for (int w = 0; w < str.size(); w++) {
System.out.println(str.get(w));
}
}
}
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 tag = args[0];
String begintag = "<"+tag;
String endtag = "</"+tag+">";
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
reader.close();
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
StringBuilder bsline = new StringBuilder();
while (bufferedReader.ready()){
bsline.append(bufferedReader.readLine());
}
bufferedReader.close();
String line = bsline.toString();
//System.out.println(line);
ArrayList<Integer> beginTagInt = new ArrayList<>(); //лист для открывающего тэг
ArrayList<Integer> endTagInt = new ArrayList<>();
ArrayList<String> str = new ArrayList<>();
String line2=line;
int aaa=line2.indexOf(begintag);
int bbb=0;
while (aaa>0){
if (beginTagInt.size()==0)bbb+=aaa;
else bbb+=aaa+5;
beginTagInt.add(bbb);
line2 = line2.substring(line2.indexOf(begintag)+begintag.length());
aaa=line2.indexOf(begintag);
}
line2=line;
aaa=line2.indexOf(endtag);
bbb=0;
while (aaa>0){
if (endTagInt.size()==0)bbb+=aaa;
else bbb+=aaa+6;
endTagInt.add(bbb);
line2 = line2.substring(line2.indexOf(endtag)+endtag.length()-1);
aaa=line2.indexOf(endtag);
}
int d=0;
while (beginTagInt.size()>1){
if (beginTagInt.get(d+1)>endTagInt.get(0)){
str.add(line.substring(beginTagInt.get(0),endTagInt.get(d)+endtag.length()));
beginTagInt.remove(0);
endTagInt.remove(d);
d=0;
} else d++;
}
str.add(line.substring(beginTagInt.get(0),endTagInt.get(0)+endtag.length()));
for (int w=0; w<str.size(); w++){
System.out.println(str.get(w));
}
}
}