На тестовом закидываю строку обычную вместо 28 строки, выводит по тесту правильно. Но решение не пропускает, где налюбился, пока не вижу.
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.TreeMap;
/*
Знакомство с тегами
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String nameFile = reader.readLine();
reader.close();
StringBuilder stringBuilder = new StringBuilder();
try(BufferedReader readFile = new BufferedReader(new FileReader(nameFile))){
while(readFile.ready()){
stringBuilder.append(readFile.readLine());
}
}
String str = String.valueOf(stringBuilder).replaceAll("[\\n\\r]","");
String firstTag = "<" + args[0];
String lastTag = "</" + args[0];
ArrayList<Integer> listFirstTag = new ArrayList<>();
ArrayList<Integer> listSecondTag = new ArrayList<>();
int iFirstTag = str.indexOf(firstTag);
int iLastTag = str.indexOf(lastTag);
listFirstTag.add(iFirstTag);
listSecondTag.add(iLastTag+lastTag.length()+1);
while(iFirstTag!=-1 || iLastTag!=-1){
iFirstTag = str.indexOf(firstTag, iFirstTag+firstTag.length());
iLastTag = str.indexOf(lastTag, iLastTag+lastTag.length());
if(iFirstTag!=-1 && iLastTag!=-1){
listFirstTag.add(iFirstTag);
listSecondTag.add(iLastTag+lastTag.length()+1);
}
}
for (int i=0; i<listFirstTag.size(); i++){
iFirstTag = listFirstTag.get(i);
iLastTag = listSecondTag.get(i);
for(int j=0; j<listSecondTag.size(); j++){
if((i>j)&&iFirstTag<listSecondTag.get(j)){iLastTag=listSecondTag.get(j);}
if((i<j)&&(iLastTag>listFirstTag.get(j))){iLastTag = listSecondTag.get(j);}
}
System.out.println(str.substring(iFirstTag, iLastTag));
}
}
}