2013-11-21 2 views
1

Хорошо, вот что я получил. Все полностью работает, за исключением всякий раз, когда я перехожу, чтобы преобразовать его, мой ярлык ответа всплывает 0.0, поэтому я знаю, что он, по крайней мере, разобщает дважды. Я просто не знаю, получает ли он число от ввода для использования в уравнении, которое устанавливает мою переменную на мою метку.Проблема с использованием пользовательского ввода из JTextField

Рама:

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

public class Prog8Frame extends JFrame { 
    private JLabel icon; 
    private JLabel temperLab; 
    private JLabel fahr; 
    private static JTextField input; 
    private JButton convert; 
    private JLabel answer; 
    private JLabel degC; 

    public Prog8Frame() { 
     super("Prog 8"); 
     setLayout (new FlowLayout()); 

     Icon thermometer = new ImageIcon(getClass().getResource("thermometer.png")); 
     icon = new JLabel(thermometer); 
     add(icon); 

     temperLab = new JLabel("Temperature"); 
     add(temperLab); 

     fahr = new JLabel("Fahrenheit"); 
     add(fahr); 

     input = new JTextField(7); 
     add(input); 

     convert = new JButton("Convert"); 
     add(convert); 
     convert.addActionListener(new ButtonHandler()); 

     answer = new JLabel(); 
     add(answer); 

     degC = new JLabel("degrees Celsius"); 
     add(degC); 
    } 
    private class ButtonHandler implements ActionListener { 
     public void actionPerformed(ActionEvent click) { 
      String strInput = input.getText(); 
      double fahren = Double.parseDouble(strInput); 
      double degCel = ((fahren - 32)*(5/9)); 
      answer.setText("" +degCel); 
     } 
    } 
} 

Tester:

import javax.swing.JFrame; 

public class Prog8 { 

    public static void main(String[] args) { 
     Prog8Frame Prog8 = new Prog8Frame(); 
     Prog8.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     Prog8.setSize(300, 300); 
     Prog8.setVisible(true); 

    } 

} 
+0

На совершенно другой вопрос, вы должны явно преобразовать один числа в (5/9), чтобы удвоить, как ((двойной) 5/9) –

+2

Это абсолютно ** ** ничего общего с Eclipse, и все это связано с ядром Java. Удаление тега и упоминание в заголовке. Вы могли бы также обвинить бренд компьютера, над которым работаете. –

ответ

1

Виновник следует за уравнением.

double degCel = ((fahren - 32)*(5/9)); 

5/9 вернет 0. Использование 5.0/9. Это приведет к двойному значению.

double degCel = ((fahren - 32)*(5.0/9)); 
1

Это связано с 5/9, который преобразовывается обратно в int, который в основном соответствует обратно 0

Попробуйте изменить его .. .

double degCel = ((fahren - 32)*(5d/9d)); 

вместо. Это приведет к тому, что Java сохранит результат как double

+0

Полностью исправлено, спасибо! – user3019682

Смежные вопросы