Я пытаюсь создать программу, которая принимает строку в качестве аргумента в свой конструктор. Мне нужен метод, который проверяет, является ли строка сбалансированным выражением в скобках. Он должен обрабатывать ({[]}), каждый открытый должен балансировать с соответствующей закрывающей скобкой. Например, пользователь может ввести [({})], который будет сбалансирован, а} {будет неуравновешенным. Это не нужно обрабатывать буквы или цифры. Для этого мне нужно использовать стек.
Мне был дан этот псевдокод, но я не могу понять, как его реализовать в java. Любые советы были бы замечательными.
Обновление - извините, забыл опубликовать то, что у меня было до сих пор. Его все испортилось, потому что сначала я пытался использовать char, а затем я попробовал массив.. im не совсем уверен, куда идти.
import java.util.*;
public class Expression
{
Scanner in = new Scanner(System.in);
Stack<Integer> stack = new Stack<Integer>();
public boolean check()
{
System.out.println("Please enter your expression.");
String newExp = in.next();
String[] exp = new String[newExp];
for (int i = 0; i < size; i++)
{
char ch = exp.charAt(i);
if (ch == '(' || ch == '[' || ch == '{')
stack.push(i);
else if (ch == ')'|| ch == ']' || ch == '}')
{
//nothing to match with
if(stack.isEmpty())
{
return false;
}
else if(stack.pop() != ch)
{
return false;
}
}
}
if (stack.isEmpty())
{
return true;
}
else
{
return false;
}
}
}