java - Java 摄氏度到华氏度

标签 java

我可以将华氏度转换为摄氏度,但反过来不行。我附上了下面的代码。希望这足以了解发生了什么。

    public void actionPerformed(ActionEvent arg0) {  
        double temps = 0, temp1 = 0;  
        String instrings;  
        instrings = temp.getText();  
        if(instrings.equals(""))  
        {  
            instrings = "0";  
            temp.setText("0");  
        }  
        temps = Double.parseDouble(instrings);  
        instrings = temp.getText();  
        if(instrings.equals(""))  
        {  
            instrings = "0";  
            temp.setText("0");  
        }  
        temp1 = Double.parseDouble(instrings);  
        if(arg0.getActionCommand().equals("C")){  
             temps = (( temps * 9)/5+32);  
             DecimalFormat formatters = new DecimalFormat("#,###,###.###");  
            results.setText(""+formatters.format(temps));  
        }  
        else if(arg0.getActionCommand().equals("F"));  
        {  
             temp1 = (((temps - 32)/9)*5);  
             DecimalFormat formatters = new DecimalFormat("#,###,###.###");  
            results.setText(""+formatters.format(temp1));  
        }  
    }

最佳答案

放一个

System.out.println(arg0.getActionCommand());

在您的方法中,据推测您会在使用摄氏按钮时看到它不是“C”

一般都是看控制台,看看周围有没有报错信息。


另一个想法:您正在使用两个双变量 tempstemp1,将 instrings 解析为它们,然后设置其中一个他们的结果。为什么这么复杂?


一般来说,我建议不要使用 getActionCommand() 方法,而是给每个按钮一个自己的 ActionListener。您可以为此使用匿名类。由于这两种情况几乎相同,因此在此处使用内部(甚至本地)类的两个子类:

abstract class ConversionListener implement ActionListener {
    DecimalFormat formatter = new DecimalFormat("#,###,###.##");

    public void actionPerformed(ActionEvent e) {
        String input = temp.getText();
        if (input.equals("")) {
           input = "0";
           temp.setText(input);
        }
        double number = Double.parseDouble(input);
        results.setText(formatter.format(convert(number)));
    }
    /** to implement by subclasses */
    abstract double convert(double number);
}
celsiusToFahrenheit.addActionListener(new ConversionListener() {
    double convert(double celsius) {
        return number * 9 / 5 + 32;
    }
});
fahrenheitToCelsius.addActionListener(new ConversionListener() {
    double convert(double fahrenheit) {
        return (fahrenheit - 32) / 9 * 5;
    }
});

关于java - Java 摄氏度到华氏度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5500264/

相关文章:

java - 使用Web Start时是否可以指定Java U版本?

java - 解决 java.lang.NullPointerException 错误 将用户的输入传递给对象

java - JTable如何选择多行?

java - 枚举类声明并在另一个类中使用它

java - quickfix.InvalidMessage 即使有有效消息也会抛出异常

java - 您如何访问泛型的 Class 对象?

java.lang.UnsatisfiedLinkError : Can't obtain class com. sun.jna.Pointer(神经技术Megamatcher SDK)

java - ACTION_GET_CONTENT 只有文件,没有图像或视频

java - 使用同步对象将函数与多个线程的执行隔离

Java 为什么会出现此错误?线程中出现异常 "main"java.lang.NullPointerException