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

Numero negativo no teste

Recommended Posts

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 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...

×
×
  • Criar Novo...