如何检查输入是否是双精度



我写了一个非常基本的华氏到摄氏转换器只是为了练习,它似乎是工作的,但我想包括一些代码,会告诉用户"输入一个有效的数字",如果他们添加一个字符串或什么都没有。我假设我需要一个if语句来检查值是否== double,就像它应该是我不确定如何做到这一点。我所尝试的一切都会给我一些错误,变量"value"总是用红色的弯线下划线。

我有:

package sample;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
public class Controller {
    @FXML
    private TextField textBoxC;
    @FXML
    private Button btnCels;
    @FXML
    private TextField textBoxF;
    @FXML
    void btnCels_onAction(ActionEvent event) {
                  double value = Double.parseDouble(textBoxF.getText());
                  double answer = value * 9 / 5 + 35;
                  textBoxC.setText(String.valueOf(answer));
      }
}

我可以添加什么到这段代码,使它运行只有当值在textBoxF是一个有效的双数据类型?

非常感谢。

我想你确实想工作时,你得到的异常当试图解析字符串为双精度?

简单的解决方法(不流畅但有效):

try{
    double value = Double.parseDouble(textBoxF.getText());
    double answer = value * 9 / 5 + 35;
              textBoxC.setText(String.valueOf(answer));
}
catch (Exception e){
//What should happen when the input string is no double?
}

的更多信息

这样可以捕获抛出的异常。尽管如此,您将始终尝试转换,但您并不总是在文本框中设置新文本。

如果String参数不能转换为Double,则parseDouble抛出NumberFormatException。你可以抓住它,做你想做的:

try {
    double value = Double.parseDouble(textBoxF.getText());
    double answer = value * 9 / 5 + 35;
    textBoxC.setText(String.valueOf(answer));
} catch (NumberFormatException e) {
     // here provide your logic to tell the user to "Enter a valid number" 
}

最新更新