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