На так то вроде правильно
package com.javarush.task.task19.task1918;
import java.io.*;
import java.util.ArrayList;
/*
Знакомство с тегами
*/
public class Solution {
public static void main(String[] args) throws IOException {
String tag = args[0];
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String file = bufferedReader.readLine();
// String file = "1";
FileReader fileReader = new FileReader(file);
String html = "";
while (fileReader.ready()) //пока есть непрочитанные байты в потоке ввода
{
int data = fileReader.read(); //читаем один символ (char будет расширен до int)
char chardata = (char) data;
html += chardata;
}
int start = html.indexOf(tag)-1;
int end = html.lastIndexOf(tag)+tag.length()+1;
html = (html.substring(start, end)).replaceAll("[\n\r]", "");
String startTag = "<" + tag;
String endTag = "</" + tag + ">";
String serchstartTag = "";
String serchendTag = "";
int flag = 0;
for (int i = 0; i < html.length(); i++) {
if(serchstartTag.length()<startTag.length()){
serchstartTag+=html.charAt(i);
} else if (serchstartTag.equals(startTag)){
flag +=1;
serchstartTag = "";
} else {
serchstartTag = (serchstartTag.substring(1))+html.charAt(i);
}
if(serchendTag.length()<endTag.length()){
serchendTag+=html.charAt(i);
} else if (serchendTag.equals(endTag)){
flag -=1;
if(flag==0){
System.out.println();
}
serchendTag = "";
} else {
serchendTag = (serchendTag.substring(1))+html.charAt(i);
}
System.out.print(html.charAt(i));
}
bufferedReader.close();
fileReader.close();
}
}