Boa noite, sou iniciante em java e estou tentando fazer uma Calculadora Polonesa reversa simples com uma pilha.
Estou em dúvida na impressão do resultado, (nas linhas 132-137, 198-201 e 233-236), pois preciso imprimi-lo com o JOptionPane e não com o System.out.println.
Desde já agradeço.
[code]import java.util.Scanner;
import javax.swing.*;
public class Calculadora {
static int nmr1, nmr2, nmr3, nmr4;
static String op1, op2, op3;
static int res1, res2, res3;
public static class Pilha {
private String[] Pilha;
private int topo;
private final int maximo = 7;
public Pilha() {
Pilha = new String[maximo];
topo = 0;
}
public void empilhar(String x) {
if (topo < maximo) {
Pilha[topo] = x;
topo++;
}
}
public void desempilhar() {
if (topo > 0)
topo--;
}
public boolean pilhaVazia() {
return topo == 0;
}
public String topoPilha() {
if (topo > 0) {
return Pilha[topo - 1];
}
return null;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Pilha x = new Pilha();
try {
nmr1 = Integer.parseInt(JOptionPane.showInputDialog(null,
"Digite o primeiro número da expressão"));
} catch (NumberFormatException erro) {
JOptionPane.showMessageDialog(null,
"Erro, digite um valor inteiro!!!",
"Entrada de dados inválida!", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
try {
nmr2 = Integer.parseInt(JOptionPane.showInputDialog(null,
"Digite o segundo número da expressão"));
} catch (NumberFormatException erro) {
JOptionPane.showMessageDialog(null,
"Erro, digite um valor inteiro!!!",
"Entrada de dados inválida!", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
op1 = JOptionPane.showInputDialog(null,
"Digite o primeiro operador da expressão");
if (op1.equals("+") || op1.equals("-") || op1.equals("*")
|| op1.equals("/")) {
} else {
JOptionPane.showMessageDialog(null,
"Erro, digite um operador válido!!!",
"Entrada de dados inválida!", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
try {
nmr3 = Integer.parseInt(JOptionPane.showInputDialog(null,
"Digite o terceiro número da expressão"));
} catch (NumberFormatException erro) {
JOptionPane.showMessageDialog(null,
"Erro, digite um valor inteiro!!!",
"Entrada de dados inválida!", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
try {
nmr4 = Integer.parseInt(JOptionPane.showInputDialog(null,
"Digite o quarto número da expressão"));
} catch (NumberFormatException erro) {
JOptionPane.showMessageDialog(null,
"Erro, digite um valor inteiro!!!",
"Entrada de dados inválida!", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
op2 = JOptionPane.showInputDialog(null,
"Digite o segundo operador da expressão");
if (op2.equals("+") || op2.equals("-") || op2.equals("*")
|| op2.equals("/")) {
} else {
JOptionPane.showMessageDialog(null,
"Erro, digite um operador válido!!!",
"Entrada de dados inválida!", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
op3 = JOptionPane.showInputDialog(null,
"Digite o terceiro operador da expressão");
if (op3.equals("+") || op3.equals("-") || op3.equals("*")
|| op3.equals("/")) {
} else {
JOptionPane.showMessageDialog(null,
"Erro, digite um operador válido!!!",
"Entrada de dados inválida!", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
String nmr1s = String.valueOf(nmr1);
String nmr2s = String.valueOf(nmr2);
String nmr3s = String.valueOf(nmr3);
String nmr4s = String.valueOf(nmr4);
x.empilhar(op3);
x.empilhar(op2);
x.empilhar(nmr4s);
x.empilhar(nmr3s);
x.empilhar(op1);
x.empilhar(nmr2s);
x.empilhar(nmr1s);
System.out.print("A expressão digitada foi: ");
while (!x.pilhaVazia()) {
System.out.print(x.topoPilha() + "");
x.desempilhar();
}
x.empilhar(op3);
if (op2.equals("+")) {
res2 = nmr3 + nmr4;
String res2s = String.valueOf(res2);
x.empilhar(res2s);
}
if (op2.equals("-")) {
res2 = nmr3 - nmr4;
String res2s = String.valueOf(res2);
x.empilhar(res2s);
}
if (op2.equals("*")) {
res2 = nmr3 * nmr4;
String res2s = String.valueOf(res2);
x.empilhar(res2s);
}
if (op2.equals("/")) {
if (nmr4 == 0) {
String res2s = "ERRO, IMPOSSIVEL DIVIDIR POR ZERO!";
x.empilhar(res2s);
} else {
res2 = nmr3 / nmr4;
String res2s = String.valueOf(res2);
x.empilhar(res2s);
}
}
if (op1.equals("+")) {
res1 = nmr1 + nmr2;
String res1s = String.valueOf(res1);
x.empilhar(res1s);
}
if (op1.equals("-")) {
res1 = nmr1 - nmr2;
String res1s = String.valueOf(res1);
x.empilhar(res1s);
}
if (op1.equals("*")) {
res1 = nmr1 * nmr2;
String res1s = String.valueOf(res1);
x.empilhar(res1s);
}
if (op1.equals("/")) {
if (nmr2 == 0) {
String res1s = "ERRO, IMPOSSIVEL DIVIDIR POR ZERO!";
x.empilhar(res1s);
} else {
res1 = nmr1 / nmr2;
String res1s = String.valueOf(res1);
x.empilhar(res1s);
}
}
System.out.print("\nO resultado da primeira expressão é: ");
while (!x.pilhaVazia()) {
System.out.print(x.topoPilha() + "");
x.desempilhar();
}
if (op3.equals("+")) {
res3 = res1 + res2;
String res3s = String.valueOf(res3);
x.empilhar(res3s);
}
if (op3.equals("-")) {
res3 = res1 - res2;
String res3s = String.valueOf(res3);
x.empilhar(res3s);
}
if (op3.equals("*")) {
res3 = res1 * res2;
String res3s = String.valueOf(res3);
x.empilhar(res3s);
}
if (op3.equals("/")) {
if (res2 == 0) {
String res3s = "ERRO, IMPOSSIVEL DIVIDIR POR ZERO!";
x.empilhar(res3s);
} else {
res3 = res1 / res2;
String res3s = String.valueOf(res3);
x.empilhar(res3s);
}
}
System.out.print("\nO resultado final é: ");
while (!x.pilhaVazia()) {
System.out.print(x.topoPilha() + "");
x.desempilhar();
}
}
}[/code]