java中LinkedLists的LinkedList?

时间:2012-03-02 05:35:45

标签: java list linked-list stack

我正在尝试在java中实现堆栈,我希望能够返回返回错误的同伴的open括号的行和列。例如:

public static foo() {
   System.out.println ("foo"
}

这应该在编译时产生错误,我想要返回的是以下形式的错误:

"错误:第2行第23行'('找到,预期')'在第2栏第29栏,但发现' '代替"

是否可以使用LinkedList of linkedLists?或者另一种工具对于这个应用程序会更好。我想push(),pop()和peek()方法来保持常量行为。

谢谢

1 个答案:

答案 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>。然后,当您在文件中移动时,可以将开口支撑推到堆叠上,当您到达每个闭合支撑时,确保它是堆叠顶部支撑的闭合支撑。如果不是,您已经存储了要在错误消息中打印的行和列。