[Dúvida] JTextField está ficando com valor zerado "-0.0"

3 respostas
S

Boas,

estou aprendendo java e estou tendo dificuldades pra finalizar um programinha de conversão de fahrenheit para celsius que fiz...não sei se é erro de lógica ou algum outro. Eu faço os cálculos de conversão e tento jogar o resultado em um JTextField que desabilitei para servir apenas como uma caixa que mostra os resultados das conversões. O erro que está acontecendo é que está aparecendo na caixa de texto o valor "-0.0" depois que mando calcular a conversão, independente do valor que se mande calcular.

Aqui está a imagem do erro:
[img]http://img36.imageshack.us/img36/4527/erroconversao.png[/img]

E aqui está o source:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Conversao extends JFrame
{
   JLabel mensagem;
   JButton botao;
   JTextField caixaTexto1, caixaTexto2;
   
   Conversao()
   {
	  this.setTitle("Conversão v1.0");
	  this.setLayout(new GridLayout(2,2));
	  this.setResizable(false);
	  this.setSize(300, 80);
	  this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
	  
      mensagem = new JLabel("Graus em Fahrenheit:  ");
      botao = new JButton("Calcular");
      caixaTexto1 = new JTextField();
      caixaTexto2 = new JTextField();
      
      
      
      caixaTexto2.setEditable(false);
      botao.addActionListener(new calcular());
      
      add(mensagem);
      add(caixaTexto1);
      add(botao);
      add(caixaTexto2);
          
   }
   
   private class calcular implements ActionListener
   {
      public void actionPerformed(ActionEvent e)
      {
         double temperaturaCelsius = 0;
         double temperaturaFahrenheit = 0;
    	  
         try
         {
            temperaturaFahrenheit = Double.parseDouble(caixaTexto1.getText());
            // fórmula do Fahrenheit para Celcius:  resultadoCelsius = 5 / 9 * (?  - 32)
            temperaturaCelsius = ( 5 / 9 * (temperaturaFahrenheit - 32) );
            
            caixaTexto2.setText(String.valueOf(temperaturaCelsius));
         }
         catch (NumberFormatException excecao) // se entrar com letras na caixa de texto
         {
            JOptionPane.showMessageDialog(null,"Valor digitado inválido","Entre com valor numérico",JOptionPane.ERROR_MESSAGE);
         }
         

      }
   }
   
   public static void main(String args[])
   {
      Conversao programa = new Conversao();
      programa.setVisible(true);
   }
   
}

Grato se alguém puder ajudar!

3 Respostas

V

Opa boa tarde !
Sou novo aqui, mas acho que posso te ajudar com esse probleminha !

Tente adicionar isso…

double x = (double) 5/9; temperaturaCelsius = ( (x * (temperaturaFahrenheit - 32)) );

Acredito que a divisao de 5 por 9 possa estar gerando um valor inteiro, que neste caso daria 0…
Por isso estaria resultando 0.

Espero ter ajudado
Abraço
:grin:

S
vine:
double x =  (double) 5/9;
 temperaturaCelsius = ( (x * (temperaturaFahrenheit - 32)) );

Acredito que a divisao de 5 por 9 possa estar gerando um valor inteiro, que neste caso daria 0..
Por isso estaria resultando 0.

Muito obrigado pela ajuda vine...com base no q vc falou eu alterei a fórmula(os operandos na fórmula estavam mal posicionados) e agora está certo. Mas a divisão de 5 por 9 gera "0,5555555.." então não é valor inteiro, por isso não entendi o porque de zerar, mas sei que o problema era ai mesmo, resolveu.

o código ficou assim:

temperaturaFahrenheit = Double.parseDouble(caixaTexto1.getText());
           
            // fórmula Fahrenheit:  (C=F-32x5/9)
            temperaturaCelsius = ( ( 5 * (temperaturaFahrenheit - 32) ) / 9 );
            
            caixaTexto2.setText(String.valueOf(temperaturaCelsius));

Obrigado!

V

Bom o porque de zerar, é que inteiro pega apenas o numero antes da virgula( no caso apenas o 0).
E tu tava multiplicando esse 0 por algo, sempre zeraria
Nao sei se foi isso que tu falou
Mas, que bom que funcionou
Abraco
:smiley:

Criado 14 de junho de 2009
Ultima resposta 14 de jun. de 2009
Respostas 3
Participantes 2