我已经尝试了两天让我的程序运行起来,这是一项作业任务,我认为我的算法应该是正确的,使用堆栈检查标签是否平衡。如果有人知道代码哪里出了问题,我将不胜感激。现在它看起来像这样:
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实例“parser”的情况。