我正在尝试在java中实现堆栈,我希望能够返回返回错误的同伴的open括号的行和列。例如:
public static foo() {
System.out.println ("foo"
}
这应该在编译时产生错误,我想要返回的是以下形式的错误:
"错误:第2行第23行'('找到,预期')'在第2栏第29栏,但发现' '代替"
是否可以使用LinkedList of linkedLists?或者另一种工具对于这个应用程序会更好。我想push(),pop()和peek()方法来保持常量行为。
谢谢
答案 0 :(得分:2)
使用内置的Stack对象。无需重新发明轮子并创建自己的标准库类版本。
对于不匹配的大括号的打印错误,我建议创建一个类
public final class Brace {
private final char openBrace;
private final char closeBrace;
private final int row;
private final int col;
public Brace(char openBrace, int row, int col) {
this.openBrace = openBrace;
this.row = row;
this.col = col;
switch (openBrace) {
case '(':
closeBrace = ')';
break;
case '{':
closeBrace = '}';
break;
case '[':
closeBrace = ']';
break;
default:
throw new IllegalArgumentException("Unsupported opening brace");
}
}
public boolean isClosingBrace(char ch) {
return closeBrace == ch;
}
}
并在您的计划中保留Stack<Brace>
。然后,当您在文件中移动时,可以将开口支撑推到堆叠上,当您到达每个闭合支撑时,确保它是堆叠顶部支撑的闭合支撑。如果不是,您已经存储了要在错误消息中打印的行和列。