import java.util.Scanner;
public class ExpresaoMath {
public static void main(String[] args) {
Expressao pilha = new Expressao(6);
Scanner in = new Scanner(System.in);
System.out.println("Digite uma expressão algébrica no formato {[()]}\n");
String expr = in.nextLine();
for (int i = 0; i <= expr.length() - 1; i++) {
if (pilha.getDelimitador(expr.charAt(i))) {
pilha.empilha(expr.charAt(i));
}
}
String aux = pilha.retornaFormato();
if (aux.equals("{[()]}")) {
System.out.println("Expressão Correta");
} else {
System.out.println("Expressão Incorreta");
}
}
}
class Expressao {
protected String elementos[];
private int topo;
protected char[] delimitadores = {'{', '[', '(', ')', ']', '}'};
public Expressao(int tamanho) {
topo = -1;
elementos = new String[tamanho];
}
public void empilha(char x) {
topo++;
elementos[topo] = String.valueOf(x);
}
public void desempilha() {
topo--;
}
public String elementoTopo() {
return elementos[topo].toString();
}
public boolean pilhaCheia() {
return (topo == elementos.length - 1);
}
public boolean listaVazia() {
return (topo == -1);
}
public boolean getDelimitador(char valor) {
boolean ok = false;
for (int i = 0; i <= delimitadores.length - 1; i++) {
ok = delimitadores[i] == valor ? true : false;
if (ok) {
break;
}
}
return ok;
}
public String retornaFormato(){
String formato = "";
for (int i = 0; i <= elementos.length-1; i++) {
formato += elementos[i];
}
return formato;
}
}
Somente validação se a expressão e valida, não precisa fazer os cauclos e dar a resposta.
