繁体   English   中英

从表单读取时如何忽略空值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM