Java 检查文本字段是否为空

Java 检查文本字段是否为空,java,javafx,input,textfield,Java,Javafx,Input,Textfield,好的,那么,我所拥有的,应该是一个简单的掷骰子机。两个文本字段,一个表示要滚动的模具数量,另一个表示总数量。(好的,每个单独的骰子滚动三分之一,但这不是重点)只要骰子文本字段的数量不是空的,这就行了。当字段为空时,我只得到一个NumberFormatException int d4_num; try { d4_num = Integer.parseInt(d4_text.getText()); } catch (NumberFormatException e) { d4_num

好的,那么,我所拥有的,应该是一个简单的掷骰子机。两个文本字段,一个表示要滚动的模具数量,另一个表示总数量。(好的,每个单独的骰子滚动三分之一,但这不是重点)只要骰子文本字段的数量不是空的,这就行了。当字段为空时,我只得到一个
NumberFormatException

int d4_num;

try {
    d4_num = Integer.parseInt(d4_text.getText());
} catch (NumberFormatException e) {
    d4_num = 0;
}
我的代码:

        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=新按钮(“d4”);
d4.设置布局X(240);
d4.设置布局(90);
d4.addEventHandler(ActionEvent.ACTION,new EventHandler()){
@凌驾
公共无效句柄(ActionEvent ActionEvent){
工具提示。setText(“”);
int d4_num=Integer.parseInt(d4_text.getText());//d4_text表示模具的数量
d4_num=d4_num+1;
整数和=0;
对于(int i=1;i

我尝试过用不同的方法检查
d4_text
的值,每种方法都会给出一个错误,因为我无法检查null、字符串或其他任何内容。

要安全地检查“字段是否包含整数值”,可以执行以下操作:

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位数字组成的数字。

您可以捕获该异常,并在出现
NumberFormatException时将其设置为零。

int d4_num;

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

在传递整数值之前,请尝试此操作

if (d4_text.getText() == null || d4_text.getText().trim().isEmpty()) {
 // your code here }
我试着用不同的方法检查d4_文本的值,每种方法都是如此 由于无法检查null或字符串而给出错误,或 不管怎样

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

使用
整数
而不是
int
有助于确定提交的值是否为
整数
<接受
null
值的code>Integer
可能会传递失败的输入,但必须使用数值进行赋值的
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
   }
 }
您还可以使用来执行此操作:

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

嘿,谢谢你!基本上就是我想做的,但我不知道怎么做。