Pessoal digito essa expressão quando vou testar:
(-10+3*7-11)+5^3-375/3
e tem que dar Zero, só que no meu programa dá erro de valores inválidos, aguém sabe porque?
Main:
`public class Main {
public static void main(String[] args) throws Exception {
	BufferedReader leitor = new BufferedReader(new InputStreamReader(System.in));
	Expressao analisa = null;
	/**
	 * For para sempre
	 * ReplaceAll faz a substituição do primeiro conteúdo original para o segundo conteúdo
	 */
	for(;;)
	try {		
		System.out.println("Por favor digite uma expressão: ");
		analisa = new Expressao(leitor.readLine().replaceAll(" ", "")); 
		analisa.verifiqueToken();
		
		analisa.resolveExpressao();
		
		System.out.println("O resultado final da expressão que você digitou é:");
		analisa.exibePilha();
		break;
	}
	catch (IOException error) {  //Não irá ocorrer
			}
	catch(NumberFormatException nerror){
		System.err.println("Expressão possui valores inválidos, por favor digite uma expressão correta");
	}
	catch(NullPointerException nullerror){
		System.err.println("Expressão possui valores inválidos, por favor digite uma expressão correta");
	}
	catch(Exception e){
		System.err.println(e.getMessage());
	}
}
}`
método resolveExpressao:
`public void resolveExpressao() throws Exception {
	@SuppressWarnings("unused")
	double nroConvertido;
	String operando;
	String resultado;
	double prinumero, segnumero;
	
	while (this.pilha.topo() != null){
		
		
		this.fila.enfilere(this.pilha.topo());
		this.pilha.desempilhe();	
	}
	while (this.fila.primeiro() != null) {
		try {
			nroConvertido = Double.parseDouble(this.fila.primeiro());
			this.pilha.empilhe(this.fila.primeiro());
			this.fila.desenfilere(this.fila.primeiro());
		}
		
		catch (Exception e) {
			operando = this.fila.primeiro();
			this.fila.desenfilere(this.fila.primeiro());
			segnumero = Double.parseDouble(this.pilha.topo());
			this.pilha.desempilhe();
			prinumero = Double.parseDouble(this.pilha.topo());
			this.pilha.desempilhe();
			resultado = calculaExpr(prinumero, segnumero, operando) + "";
			this.pilha.empilhe(resultado);
		} 
	}
}`