如何检查输入是否是双

时间:2015-08-05 22:25:54

标签: java types conditional

我写了一个非常基本的Fahrenheit到Celsius转换器只是为了练习它似乎工作但我想包括一些代码,如果他们要么添加一个字符串或没有任何东西会告诉用户“输入一个有效的数字” 。我假设我需要一个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中的值是有效的双数据类型,我可以添加到此代码中以使其仅运行吗?

非常感谢你。

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

如果parseDouble参数无法转换为NumberFormatException

String会引发Double。你可以抓住它并做你想做的事情:

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