gpt4 book ai didi

java - 检查 html 标签是否平衡

转载 作者:行者123 更新时间:2023-12-04 14:40:54 25 4
gpt4 key购买 nike

我花了两天时间尝试让我的程序运行,这确实是一项家庭作业,我认为我的算法应该是正确的,使用堆栈来检查标签是否平衡。如果有人知道代码有什么问题,我将不胜感激。这是现在的样子:

public class HtmlParser {

private Stack<String> tagstack; // stack to collect only "<" characters.

public HtmlParser() {
tagstack = new Stack<String>();
}

private void processClosedTag(Scanner in) {
tagstack.pop();
in.next();
}

private void processOpenTag(Scanner in) {
tagstack.push(in.next()); // "<"
}

public boolean isCorrectlyNested(Scanner in) {
boolean isBalanced = false;
while(in.hasNext()) {
if(in.hasNext("<"))
processOpenTag(in); //and recurse until "/>"
else if(in.hasNext(">"))
processClosedTag(in);
}
if(tagstack.isEmpty())
isBalanced = true;
return isBalanced;

}//isCorrectlyNested

}//class

当我使用“in”扫描器对象并调用此类中的方法时,控制台中没有任何反应,它只读取我写的内容,但随后什么也没有发生,它甚至不返回我写的语句,例如:

if(parser.isCorrectlyNested(input))
System.out.println("Correctly Nested!");
else
System.out.println("Need to nest properly");

这当然是在我使用 HtmlParser 实例“解析器”的主要方法中。

最佳答案

如果下一项既不是小于号也不是大于号,那么您实际上永远不会移动扫描仪的位置。考虑下一个字符是否是某种字母数字字符串。你的 while 循环永远不会返回,因为如果它不是它正在寻找的字符串,它实际上永远不会移动过去,所以你的方法永远不会返回,你的输出也永远不会被执行。

关于java - 检查 html 标签是否平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com