Ir para conteúdo
Fórum CódigoFonte.net

thiago.af19

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

  1. thiago.af19

    Numero negativo no teste

    Pessoal digito essa expressão quando vou testar:(-10+3*7-11)+5^3-375/3e tem que dar Zero, só que no meu programa dá erro de valores inválidos, aguém sabe porque?Main: public class Teste { 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 { 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); } } } Por favor me ajudem a fazer essa expressão dar certo.
×