Olá a todos,
Sou novo por aqui e como é meu primeiro post… li sobre as regras do forum e as dicas de formatação… não encontrei nenhum post relacionado ao assunto que eu gostaria de discutir, pois bem segue minha dúvida…
Estou desenvolvendo um trabalho para faculdade, uma calculadora logica… bom preciso tratar a entrada de dados da equação e na resolução obedecer a hierarquia dos parenteses… consegui fazer a validação dos parenteses, mas nao consigo fazer a resolução de dentro dos parenteses para fora… abaixo segue meu código… espero que possam me ajudar…
package interdisciplinar;
import javax.swing.JOptionPane;
public class CalculadoraLogica {
public String getEquacao() {
return equacao;
}
public void setEquacao(String equacao) {
this.equacao = equacao;
this.tamanho = equacao.length();
}
public int getTamanho() {
return tamanho;
}
private String equacao;
private int tamanho;
private String abreP;
private String fechaP;
public boolean valida() {
char c;
int a = 0;
String abre = "";
String fecha = "";
boolean resultado;
System.out.println("eq " + equacao);
for (int i = 0; i < tamanho; i++) {//percorre a string verificando se todos os parenteses abertos sao fechados
c = equacao.charAt(i);
if (c == 40) {
a += 1;
abre += i + ",";
}
if (c == 41) {
a -= 1;
fecha += i + ",";
}
System.out.println("a= " + a + " c= " + c);
}
if (a == 0) {
resultado = true;//se a=0 os parenteses estao corretos se nao... ta errado
} else {
resultado = false;
}
System.out.println("abre: " + abre);
abreP = abre;
System.out.println("fech: " + fecha);
fechaP = fecha;
return resultado;
}
public String montaEq() {// aqui mora a duvida, nao consigo montar uma pilha com os itens a serem resolvidos na ordem
String a = "";
Pilha p = new Pilha(equacao.length());
for (int i = 0; i < equacao.length(); i++) {
while (equacao.charAt(i) != 40 || equacao.charAt(i) != 41) {
a += equacao.charAt(i);
i++;
}
p.empilhar(a);
a = "";
}
System.out.println("monta: " + a);
return a;
}
static public void main(String args[]) {
CalculadoraLogica calc = new CalculadoraLogica();
do {
calc.setEquacao(JOptionPane.showInputDialog("equação"));
if (!calc.valida()) {
JOptionPane.showMessageDialog(null, "erro de formatação");
}
} while (!calc.valida());
calc.montaEq();
}
}