Imprimir dados de uma pilha[Resolvido]

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]

Exemplo adaptando as linhas 132-137:

[code]StringWriter sw = new StringWriter();
PrintWriter out = new PrintWriter(sw);

out.print("A expressão digitada foi:
");
while (!x.pilhaVazia()) {
out.print(x.topoPilha() + “
”);
x.desempilhar();
}

JOptionPane.showMessageDialog(null, sw.toString());[/code]

Valeu! Deu certinho…