Не пойму какой текст мой извращённый код не может обработать.
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.List;
public class Solution{
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String fileName = bufferedReader.readLine();
bufferedReader.close();
FileReader reader = new FileReader(fileName);
String text = "";
while (reader.ready()){
int x = reader.read();
if (x == 13) continue;
if (x == 9) continue;
if (x == 10) continue;
text += (char) x;
}
reader.close();
// System.out.println(text);
// System.out.println(args[0]);
// System.out.println("---------------");
List<Integer> list = new ArrayList<>();
byte[] serch = args[0].getBytes();
byte[] b = text.getBytes();
for (int i = 0; i < b.length; i ++){
if (b[i] == 60 && b[i + 1] != 47 && (b[i + serch.length + 1] == 62 || b[i + serch.length + 1] == 32)) {
boolean find = false;
for (int j = 0; j < serch.length; j ++){
if (b[i + j + 1] == serch[j]) {
find = true;
} else {
find = false;
break;
}
}
if (find) list.add(i*10+1);
}
if (b[i] == 60 && b[i + 1] == 47 && (b[i + serch.length + 2] == 62 || b[i + serch.length + 2] == 32)) {
boolean find = false;
for (int j = 0; j < serch.length; j ++){
if (b[i + j + 2] == serch[j]) {
find = true;
} else {
find = false;
break;
}
}
if (find) list.add(i*10);
}
}
List<String> resultList = startStopByte(list);
for (String x : resultList){
int start = Integer.parseInt(x.split(" ")[0]);
int stop = Integer.parseInt(x.split(" ")[1]);
for (int i = start; i < stop + serch.length + 3; i ++){
System.out.print((char) b[i]);
}
System.out.println();
}
}
private static List<String> startStopByte(List<Integer> list){
int[] teg = new int[list.size()];
boolean[] value = new boolean[list.size()];
for (int i = 0; i < teg.length; i ++) {
teg[i] = list.get(i)/10;
if (list.get(i) % 10 == 1) value[i] = true;
}
List<String> resultList = new ArrayList<>();
List<Integer> alreadyUsed = new ArrayList<>();
for (int j = 0; j < teg.length; j ++){
String s;
if (!isExist(alreadyUsed, teg[j])) {
alreadyUsed.add(teg[j]);
s = teg[j] + "";
} else continue;
int count = 0;
for (int i = j+1; i < teg.length; i ++){
if (value[i]) {
count ++;
continue;
}
if (!value[i] && count != 0){
count --;
continue;
}
if (!value[i] && count == 0) {
if (!isExist(alreadyUsed, teg[i])) {
alreadyUsed.add(teg[i]);
s += " " + teg[i];
break;
}
}
}
resultList.add(s);
}
return resultList;
}
private static boolean isExist(List<Integer> list, int number){
for (int x : list) if (x == number) return true;
return false;
}
}