首页 > 解决方案 > 如何修复我的开尔文到华氏转换器?

问题描述

我在 Java GUI 中将开尔文转换为华氏温度时遇到问题。我尝试了多种输入转换公式的方法,但我似乎无法做到正确。我遇到问题的代码在我的私有类 KelvHandler 中实现了 ActionListener,尽管我已经包含了我的整个上下文代码。感谢我能得到的任何帮助。

import java.awt.*;          
import java.awt.event.*;    
import javax.swing.*;   
import static javax.swing.WindowConstants.EXIT_ON_CLOSE;
 
public class TemperatureConversion1 extends JFrame
{
    private final JLabel celsiusLabel;        
    private final JLabel fahrenheitLabel;
    private final JLabel kelvinLabel;
     
    private final JTextField celsiusTF;       
    private final JTextField fahrenheitTF;   
    private final JTextField kelvinTF;
     
    private final CelsHandler celsiusHandler;
    private final FahrHandler fahrenheitHandler;
    private final KelvHandler kelvinHandler;
     
    private static final int WIDTH = 500;
    private static final int HEIGHT = 75;   
    private static final double FTOC = 5.0/9.0;
    private static final double CTOF = 9.0/5.0;
    private static final int OFFSET = 32;
     
    public TemperatureConversion1()
    {
        setTitle("Temperature Conversion");
        Container c = getContentPane();
        c.setLayout(new GridLayout(1,4));
         
        celsiusLabel = new JLabel("Celsius: ",
                                            SwingConstants.RIGHT);
        fahrenheitLabel = new JLabel("Fahrenheit: ",
                                            SwingConstants.RIGHT);
        kelvinLabel = new JLabel("Kelvin:",
                                             SwingConstants.RIGHT);
                                             
        celsiusTF = new JTextField(7);
        fahrenheitTF = new JTextField(7);
        kelvinTF = new JTextField(7);
         
        c.add(celsiusLabel);
        c.add(celsiusTF);
        c.add(fahrenheitLabel);
        c.add(fahrenheitTF);
        c.add(kelvinLabel);
        c.add(kelvinTF);
         
        celsiusHandler = new CelsHandler();
        fahrenheitHandler = new FahrHandler();
        kelvinHandler = new KelvHandler();
         
        celsiusTF.addActionListener(celsiusHandler);
        fahrenheitTF.addActionListener(fahrenheitHandler);
        kelvinTF.addActionListener(kelvinHandler);
        setSize (WIDTH, HEIGHT);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
     
    private class CelsHandler implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            double celsius, fahrenheit, kelvin;
            celsius =
                    Double.parseDouble(celsiusTF.getText());
            fahrenheit = celsius * CTOF + OFFSET;
            kelvin = celsius + 273.15;
            fahrenheitTF.setText(String.format("%.2f", fahrenheit));
            kelvinTF.setText(String.format("%.2f", kelvin));
        }
    }
     
    private class FahrHandler implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            double celsius, fahrenheit, kelvin;
            fahrenheit = 
                    Double.parseDouble(fahrenheitTF.getText());
            celsius = (fahrenheit - OFFSET) * FTOC;
            kelvin = celsius + 273.15;
            celsiusTF.setText(String.format("%.2f", celsius));
            kelvinTF.setText(String.format("%.2f", kelvin));
        }
    }
    
    private class KelvHandler implements ActionListener
    {
       @Override
       public void actionPerformed(ActionEvent e)
       {
           double celsius, fahrenheit, kelvin;
           kelvin =
                   Double.parseDouble(kelvinTF.getText());
           celsius = kelvin - 273.15;
           fahrenheit = (kelvin - 273.15) * FTOC + OFFSET;
           celsiusTF.setText(String.format("%.2f", celsius));
           fahrenheitTF.setText(String.format("%.2f", fahrenheit));
           
       }
           
    }
     
    public static void main(String[] args)
    {
        TemperatureConversion1 tempConv = new TemperatureConversion1();
        tempConv.setLocationRelativeTo(null);
    }
}

标签: java

解决方案


对于你的开尔文到华氏度,用这个替换公式。

fahrenheit = (kelvin * 9/5) - 459.67;

推荐阅读