检查是否有空文本字段
问题描述:
好吧,我拥有的应该是一个简单的骰子滚轮。 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
方式不同的价值,每个人要么给出一个错误,因为我无法检查为空,或一个字符串,或其他。
答
要安全检查“的字段是否包含一个整数值”你可以做到以下几点:
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_text以不同的方式,每一个 或者给出一个错误,因为我无法检查空或字符串或 什么。
首先:检查该字段是不是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);
}
嘿,感谢这个!基本上正是我想要做的,但我不知道如何。 – hego64