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

How to check if the input is a double

我写了一个非常基本的华氏度到摄氏度转换器只是为了练习,它似乎可以工作,但我想包含一些代码,告诉用户 "Enter a valid number" 如果他们添加一个字符串或没有什么。我假设我需要一个 if 语句来检查值是否 == 加倍,就像它应该是的那样 我不确定如何执行此操作。我尝试的每件事都会给我某种错误,并且变量 "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 中的值是有效的双精度数据类型时,我可以向此代码添加什么才能使其 运行?

非常感谢。

如果 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" 
}

我想您确实想解决在尝试将字符串解析为双精度数时遇到的异常?

简单的解决方法(不顺利但有效):

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?
}

More Information

这样你就可以捕获抛出的异常。不过,您总是会尝试转换,但不会总是在文本框中设置新文本。