Неправильные значения при сопоставлении строк из тегов html - PullRequest
0 голосов
/ 12 апреля 2020

Я работал над тем, что проверяет, правильно ли сформирован файл HTML (для простоты нет самозакрывающихся тегов). Я отфильтровал все, кроме текста тега и «/», если он есть, используя сплит. Пример: p, / p

Я получаю значение true для таких вещей, как "head, title, / head, / title", но он проходит все мои другие тестовые случаи ..

Моя логика c для того, чтобы увидеть, правильно ли они сформированы, состоит в том, чтобы удалить из очереди теги, если она не содержит "/" pu sh в стек, если я проверю, чтобы увидеть значение из моя очередь совпадает со значением pop из моего стека et c.

Я чувствую, что совершаю какую-то логическую ошибку c, которую просто не вижу после того, как долго на нее смотрю.

while (!tags.isEmpty()) {
        try {
            temp = tags.dequeue();
            if (!temp.contains("/")) {
                openTags.push(temp);
                counter++;
            }
            if (temp.contains("/")) {
                String open = openTags.pop();
                split = temp.split("/");
                temp = split[1];
                if (counter == 0) { //check if first item contained "/" (automatically invalid)
                    return false;
                }
                if (!temp.equalsIgnoreCase(open)) {
                    return false;
                }
            }
        } catch (EmptyCollectionException ex) {
            Logger.getLogger(TagValidation.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
...