Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
thiago.af19

Numero negativo no teste

Posts recomendados

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
Este tópico está parado há muito tempo. Certifique-se que a sua mensagem tem a ver com o tema sendo discutido. Obrigado.

Junte-se à conversa

Você pode postar agora e cadastrar-se depois. Se você tem uma conta, faça o login para postar.

Visitante
Responder

×   Você colou conteúdo com formatação.   Restore formatting

  Só é possível ter até 75 emoticons.

×   O link foi automaticamente convertido para mostrar o conteúdo.   Clique aqui para mostrá-lo como link comum

×   Seu texto anterior foi restaurado.   Limpar o editor

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

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!