Java 如何将开尔文转换为华氏温度?

Java 如何将开尔文转换为华氏温度?,java,Java,我在Java GUI中将开尔文转换为华氏温度时遇到问题。我尝试了多种方法来输入转换公式,但我似乎无法正确地得到它。我遇到问题的代码在我的私有类KelvHandler implements ActionListener中,尽管我已经包含了上下文的全部代码。我很感激能得到的任何帮助 import java.awt.*; import java.awt.event.*; import javax.swing.*; import static javax.swing.W

我在Java GUI中将开尔文转换为华氏温度时遇到问题。我尝试了多种方法来输入转换公式,但我似乎无法正确地得到它。我遇到问题的代码在我的私有类KelvHandler implements 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);
    }
}

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

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

确切的问题是什么?什么工作方式与您预期的不同?问题是,当我输入开尔文温度时,华氏温度的输出不正确。您错误地调用了公式中的变量
Fahrenheit=(开尔文-273.15)*FTOC+偏移量