需要帮助将这种简单的华氏度到在Java工作的Celsius应用程序



我需要此应用程序将用户在 JTextField中输入的号码转换为 celsius 并将其显示在JLabel中。似乎在分析数据中的数据时遇到问题?这是许多错误。 谁能帮我弄清楚怎么了?(在测试它时,我仅在文本字段中输入双重值,但它仍然不会将其更改为双重。)

public class TempConvertGUI extends JFrame{
    private JLabel result;
    private final JTextField input;
    public TempConvertGUI()
    {
        super("Fahrenheit to Celsius Application");
        setLayout(new FlowLayout());
        //TempConvert convert=new TempConvert();
        input=new JTextField(10);
        input.setToolTipText("Enter degrees in fahrenheit here.");
        input.addActionListener(new ActionListener()
        {
            private double temp;
            private String string;
            @Override
            public void actionPerformed(ActionEvent event) {
                if(event.getSource()==input)
                {
                    remove(result);
                    if(event.getActionCommand()==null)
                        result.setText(null);
                    else
                    {
                        temp=Double.parseDouble(event.getActionCommand());
                        string=String.format("%d degrees Celsius", convertToCelsius(temp));
                        result.setText(string);;
                    }
                    add(result);
                }
            }
        });
        add(input);
        result=new JLabel();
        add(result);
    }
    private double convertToCelsius(double fahrenheit)
    {
        return (5/9)*(fahrenheit-32);
    }
}
  1. 从来没有设置过jtextfield的动作措施,因此它将是一个空字符串。如果要在JTEXTFIELD中解析数据,请获取其值并解析该值(例如temp=Double.parseDouble(input.getText());
  2. 请参阅格式字符串的API-使用%f来解析浮点值
  3. 无需在Action Performed中添加和删除result Jlabel,已经将其添加到UI中 - 只需设置其文本
  4. (5/9)是整数数学,如果您想要浮点数学,则将数字之一指定为正确的数据类型:(5/9d)

看来您有这个例外

java.util.IllegalFormatConversionException: d != java.lang.Double

这是因为这条代码

string=String.format("%d degrees Celsius", convertToCelsius(temp));

%d代表一个整数;您要使用%f进行双重(convertToCelsius返回双重)。

所以将其更改为

string=String.format("%f degrees Celsius", convertToCelsius(temp));

而不是 temp=Double.parseDouble(event.getActionCommand());,您应该从 input.getText()中解析输入。

相关内容

  • 没有找到相关文章

最新更新