【问题标题】:How to check if the input is a double如何检查输入是否为双精度
【发布时间】:2015-08-06 06:35:10
【问题描述】:

我写了一个非常基本的华氏到摄氏转换器只是为了练习,它似乎正在工作,但我想包含一些代码,如果他们添加一个字符串或什么都不添加,它会告诉用户“输入一个有效数字” .我假设我需要一个 if 语句来检查值是否 == 像它应该的那样翻倍我不知道该怎么做。我尝试的一切都给了我某种错误,变量“值”总是用红色波浪线下划线。

这是我所拥有的:

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 中的值是有效的双精度数据类型,我可以在此代码中添加什么以使其运行?

非常感谢。

【问题讨论】:

标签: java types conditional


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 2013-04-19
      • 2022-01-11
      • 1970-01-01
      相关资源
      最近更新 更多