[英]How to ignore null values when reading from a form?
我的Java程序中有以下代码块:
Filter.sitesToBeFiltered.add(eid.getSite());
System.out.println("Entity Site added to ArrayList. ");
Filter.applicationsToBeFiltered.add(eid.getApplication());
System.out.println("Entity Application added to ArrayList. ");
Filter.IDsToBeFiltered.add(eid.getEntity());
System.out.println("Entity ID added to ArrayList");
Filter.positionsToBeFilteredX.add(position.getX());
System.out.println("Entity X position added to ArrayList. ");
Filter.positionsToBeFilteredY.add(position.getY());
System.out.println("Entity Y position added to ArrayList. ");
Filter.positionsToBeFilteredZ.add(position.getZ());
System.out.println("Entity Z position added to ArrayList. ");
当前,它将读取一组JTextField的值,并将每个值添加到关联的ArrayList中。 (ArrayList是Integer或Double的ArrayList)。 但是,无论值是String,int / double还是null,它都会读取它们的值。
我想添加一些错误检查代码,以便仅在具有正确数据类型的情况下才将值添加到关联的ArrayList中。 我尝试通过在上面显示的代码中的每个两行代码块周围添加一个'if'语句来做到这一点,例如:
if(eid.getSite() != null){
Filter.sitesToBeFiltered.add(eid.getSite());
System.out.println("Entity Site added to ArrayList. ");
}
但是,如果这样做,我会在if
语句上看到编译错误,该语句说“参数类型int的运算符!=未定义,为null” ...这是为什么? 我应该使用什么来检查JTextFields的值不等于null
?
尝试:
if(eid != null && eid.getSite()) {
doSomething();
}
如果它是int
(原始类型),则在未设置任何值的情况下始终为0。 如果为0,则在UI端未分配任何内容,则if (!eid.getSite() == 0)
,请尝试忽略零if (!eid.getSite() == 0)
但请确保0没有任何意义。 使用string
您可以将返回对象转换为string
如果它是Object
类),并检查是否为空
我设法通过将错误检查代码添加到从JTextFields
读取值的位置来解决此问题。 所以代替:
filter1Type = String.valueOf(Gui.filter1.getSelectedItem());
filter1Value = Integer.parseInt(Gui.filter1Text.getText());
我现在有:
filter1Type = String.valueOf(Gui.filter1.getSelectedItem());
if(isNumeric(Gui.filter1Text.getText()){
filter1Value = Integer.parseInt(Gui.filter1Text.getText());
} else {
filter1Value = 0;
//Display some error message to the user here.
}
因此,现在,输入到filter1Text
JTextField中的任何非数字值都将自动转换为0,并且将向用户显示一条消息,告诉他们输入有效值。
首先,您可以使用trim方法控制空的TextField 。 在将textField值分配给arraylist之前,必须使用此控件。
在控件textField值是否为空之前,然后将其分配给arraylist。
String controlledText = eid.getText().trim();//read contents of text area into 'TextField'
if(!controlledText.equals("")){
//doSometing();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.