Добрый день!
Может кто поможет разобраться. Написал код, который, вроде, работает, но валидатор его не пропускает(говорит, "Проверь вывод тегов из следующего примера: ." ). Пробую предложенный пример
, тоже работает. Покрутил кучу разных вариантов, тоже работает.
ВОПРОС: Может кто подскажет в чем проблема или даст пример текста, с которым данный код работать не будет.
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 ArrayList<String> tagList = new ArrayList<>();
public static void main(String[] args) throws Exception{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
FileReader input = new FileReader(fileName);
StringBuilder str = new StringBuilder();
while (input.ready()) {
str.append((char)input.read());
}
input.close();
String tag = args[0];
String startOfTag = "<" + tag;
String endOfTag = "</" + tag + ">";
int firstIndex, lastIndex, nextFirstIndex;
int offset = 0;
String result;
while(true) {
firstIndex = str.indexOf(startOfTag, offset);
if(firstIndex < 0) break;
lastIndex = str.indexOf(endOfTag,firstIndex);
nextFirstIndex = str.indexOf(startOfTag, (firstIndex + 1));
if(nextFirstIndex < 0) {
result = str.substring(firstIndex, lastIndex + endOfTag.length()).replaceAll("\r\n","");
tagList.add(result);
break;
}
if (nextFirstIndex < lastIndex) {
while(nextFirstIndex < lastIndex && nextFirstIndex > 0) {
nextFirstIndex = str.indexOf(startOfTag, (nextFirstIndex + 1));
lastIndex = str.indexOf(endOfTag, (lastIndex + 1));
}
}
result = str.substring(firstIndex, lastIndex + endOfTag.length()).replaceAll("\r\n","");
tagList.add(result);
offset = firstIndex + 1;
}
tagList.forEach(System.out::println);
}
}
//d:\\java\\test\\file.txt