您使用 String 作为数字,这不是处理问题的正确方法,因为当解析为 int 时,您会得到一个错误的数字,它可能只是双精度的整数部分。在您的情况下,您将看到转换常数为零。你的代码应该是:
private void btn_convertActionPerformed(java.awt.event.ActionEvent evt) {
double conversionConstant = 0.621;
int input = Integer.parseInt(txt_input.getText());
double kmToMiles = conversionConstant * input;
lbl_converted.setText("" + kmToMiles);
...
}
这是合理的,但如果用户输入一个非整数值,如 is1.5
或 NaN(非数字) ,它将失败
这应该是您问题的完整解决方案:
private void btn_convertActionPerformed(java.awt.event.ActionEvent evt) {
final double CONVERSION_CONSTANT = 0.621;
String inputText = txt_input.getText();
double input;
try{
input = Double.parseDouble(txt_input.getText());
double kmToMiles = conversionConstant * input;
lbl_converted.setText("" + kmToMiles);
}catch(NumberFormatException e){
System.out.println("You have typed a wrong input. Only numbers are allowed");
}
}