检查空文本字段

时间:2017-08-25 20:00:16

标签: java javafx input textfield

好吧,所以,我拥有的,应该是一个简单的骰子滚筒。 2个文本字段,一个用于您想要滚动的模具数量,另一个用于总计。 (好吧,每个人掷骰子的三分之一,但除此之外)这个工作正常,只要骰子文本字段的数量不为空。当该字段为空时,我只获得NumberFormatException

我的代码:

        Button d4 = new Button("d4  ");
    d4.setLayoutX(240);
    d4.setLayoutY(90);
    d4.addEventHandler(ActionEvent.ACTION, new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent actionEvent) {
            tooltip.setText("");                
            int d4_num = Integer.parseInt(d4_text.getText()); //d4_text is for the number of die
            d4_num = d4_num + 1;
            int sum = 0;
            for (int i = 1; i < d4_num; i++){
                int result = 1 + (int)(Math.random() *4);
                sum = sum += result;
                tooltip.appendText((String.valueOf("d4_" + i + " =" + result + "\n")));

            }
            d4_result.setText(String.valueOf(sum));
        }
    });

我尝试以不同的方式检查d4_text的值,每个都给出错误,因为我无法检查null,或字符串,或其他什么。

4 个答案:

答案 0 :(得分:1)

要安全地检查&#39;该字段是否包含整数值&#39;你可以做到以下几点:

final String fieldValue = d4_text.getText();
if (fieldValue != null && fieldValue.matches("\\d+")) {
    int d4_num = Integer.parseInt(fieldValue);
    ... the rest of your logic that relies on having a correct d4_num value
} else {
    ... output some error message like 'please enter a few digits'
}

在此检查该字段是否包含非空字符串,该字符串仅由数字组成,至少包含一个数字。

对于int,用户可能会破坏此输入的数字太长;您还可以对字段值长度添加一些合理的限制:

if (fieldValue != null && fieldValue.matches("\\d{2}")) {

此处,只接受由2位数字组成的数字。

答案 1 :(得分:0)

您可以捕获该异常,并在NumberFormatException

的情况下将其设置为零
int d4_num;

try {
    d4_num = Integer.parseInt(d4_text.getText());
} catch (NumberFormatException e) {
    d4_num = 0;
}

答案 2 :(得分:0)

在传递整数值

之前尝试此操作
if (d4_text.getText() == null || d4_text.getText().trim().isEmpty()) {
 // your code here }

答案 3 :(得分:0)

  

我尝试过以不同的方式检查d4_text的值   要么出错,因为我无法检查null,还是字符串,或者   不管。

首先:检查该字段是否为null(请注意,默认情况下,Java FX输入文本字段不为空,但棘手的客户端代码可能会更改它)并且不为空(通过修剪空格)。
第二:检查它是一个数字还是捕获异常。

使用Integer而不是int有助于确定提交的值是否为Integer。接受Integer值的null可能会传达失败的输入,但int必须使用数值进行估算。

Integer d4_num = null;
String textToConvertToInt = d4_text.getText();
if (textToConvertToInt != null && !textToConvertToInt.trim().equals("")){
   try{
       d4_num = Integer.parseInt(textToConvertToInt); 
   }
   catch (NumberFormatException e){
     // handle the exception
   }
 }

您也可以使用apache-common-lang来执行此操作:

String textToConvertToInt = d4_text.getText();
Integer d4_num = null;
if (NumberUtils.isNumber(textToConvertToInt)){
  d4_num = Integer.parseInt(textToConvertToInt );
}