Используйте встроенный Стек объект.Не нужно заново изобретать колесо и создавать собственную версию стандартного библиотечного класса.
Что касается ошибок печати для непревзойденных фигурных скобок, я бы рекомендовал создать класс
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>
в вашей программе.Затем, перемещаясь по файлу, вы можете вставить открывающие скобки в стек и, достигнув каждой закрывающей скобки, убедиться, что это закрывающая скобка для скобки в верхней части стопки.Если это не так, вы уже сохранили строку и столбец для печати в сообщении об ошибке.