我似乎无法弄清楚我在事件处理程序中做错了什么;而且我不是一个好的程序员。我可以从摄氏转换为华氏,但反过来不行。对于华氏到摄氏的转换,它通常显示 0.0。我认为这可能与cfList 有关,这是我选择摄氏度或华氏度的 JComboBox。
此外,我希望能够在不输入值的情况下单击转换按钮,并且 JTextField 将自动设置为零并显示一条消息,显示“值设置为零”。
那么我怎样才能让这一切正常工作:
- 将摄氏度转换为华氏度
- 将华氏温度转换为摄氏温度
- 将摄氏温度转换为华氏温度,不带值(设置为零)
将华氏温度转换为摄氏温度(设置为零)
class TCalcButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { double far, cel; String ff, cc; String inString; inString = tempField.getText(); if(inString==null && cfList.getSelectedIndex() == 0) { degree.setText("F"); cel=0; far = cel*(9/5)+32; ff = far+""; resultField.setText(ff); tempSysField.setText("Value set to zero"); } if(inString==null && cfList.getSelectedIndex() == 1) { degree.setText("C"); far=0; cel = (5/9)*(far-32); cc = cel+""; resultField.setText(cc); tempSysField.setText("Value set to zero"); } if(cfList.getSelectedIndex()==0 && inString!=null) { degree.setText("F"); cel = Double.parseDouble(inString); far = cel*(9/5)+32; ff = far+""; resultField.setText(ff); tempSysField.setText(""); } if(cfList.getSelectedIndex()==1 && inString!=null) { degree.setText("C"); far = Double.parseDouble(inString); cel = (far-32)*(5/9); cc = cel+""; resultField.setText(cc); tempSysField.setText(""); } } }