java - 如何修复我的开尔文到华氏转换器?
问题描述
我在 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);
}
}
解决方案
对于你的开尔文到华氏度,用这个替换公式。
fahrenheit = (kelvin * 9/5) - 459.67;
推荐阅读
- python - 为什么我在 pgAdmin 中看不到我在 python 中创建的表
- javascript - twitter embed 工作正常,但一旦它推动发布它就不会重新渲染
- c# - 如何为连续 LBA 执行 SCSI 写入,例如“0x0000 到 0x1000”
- sql - T-SQL LAG 函数默认值
- mysql - 为什么 ifnull() 在 MariaDB 10.1+ 中返回 DECIMAL 而不是 BIGINT?
- python-3.x - 将属性(函数)添加到 pandas.DataFrame() 作为类的一部分
- reactjs - 使用“withTranslation”HOC 在反应模态子组件中使用 i18next 翻译时出错
- php - 带有 yii1.1 的 db 数据的下拉列表
- angular-schematics - 角度示意图混乱
- webstorm - 我可以在 Webstorm 上受到内联指责(如 GitLens)吗?