Дайте пожалуйста строчку которая не отработает
Я тренировался на том что выше
Вроде все собиралось
Есть один нюанс сумма закрытых тегов должная равняться сумме открытых . Конечно могу дописать логику но вроде етого нет в задание
Дайте плиз строчку которая не соберется
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.Map;
import java.util.TreeMap;
/*
Знакомство с тегами
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader namefile = new BufferedReader(new InputStreamReader(System.in));
Map<Integer, Character> map = new TreeMap<>(); // Здась храним ключи с номер подстроки и значенем закрытый или открытый тег
ArrayList<Integer> list = new ArrayList<>(); // Сюда мы кладем индекс начального тега и конечного тега (ну в промежутке будет еще дофига но неам на них плевать)
String opentag = ("<" + args[0]);
String closetag = ("</" + args[0] + ">");
String name1 = namefile.readLine();
String s = "";
BufferedReader reader = new BufferedReader(new FileReader(name1));
while (reader.ready()) {
s = s + reader.readLine(); // Собераем все в одну строчку
}
int fromIndex = 0;
// Ищем открые тегои
while (true) {
int zz = s.indexOf(opentag, fromIndex);
if (zz == -1) break;
fromIndex = zz + 1;
map.put(zz, 'О');
}
// Ищем закрытие теги
fromIndex = 0;
while (true) {
int zz = s.indexOf(closetag, fromIndex);
if (zz == -1) break;
fromIndex = zz + 1;
map.put(zz + closetag.length() - 1, 'З'); // -1 делаем что бы не пересекастя с открытым тегом
}
int count = 0;
for (Map.Entry<Integer, Character> pair : map.entrySet()) {
Integer key = pair.getKey();
Character value = pair.getValue();
list.add(key); // Льем все ключи будет интересовать только первый и последний
// Если count ноль то тег закрылися значит печатаем
if (value == 'О') count++;
if (value == 'З') count--;
if (count == 0) {
System.out.println((s.substring(list.get(0), list.get(list.size() - 1))) + ">");
list.clear();
}
}
}
}