Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java if语句无法过滤空名称_Java_If Statement - Fatal编程技术网

Java if语句无法过滤空名称

Java if语句无法过滤空名称,java,if-statement,Java,If Statement,可能重复: 您好,我正在使用此代码向组合框添加元素,我不想添加空元素,代码如下: public void elrendezesBetoltes(ArrayList<Elrendezes> ElrLista){ int i; Elrendezes tmp; model.removeAllElements(); model = new DefaultComboBoxModel(comboBoxItems); for(i=0; i<El

可能重复:

您好,我正在使用此代码向组合框添加元素,我不想添加空元素,代码如下:

  public void elrendezesBetoltes(ArrayList<Elrendezes> ElrLista){
    int i;
    Elrendezes tmp;
    model.removeAllElements(); 
    model = new DefaultComboBoxModel(comboBoxItems);
    for(i=0; i<ElrLista.size(); i++){
         tmp = ElrLista.get(i);
         if(tmp.getName()!="")comboBoxItems.add(tmp.getName()); //not working
         addButton2(tmp.getSeatnum(),tmp.getCoord(),tmp.getFoglalt());
    }   
}
public void elrendezesBetoltes(ArrayList ElrLista){
int i;
elrenderzetmp;
model.removeAllElements();
模型=新的DefaultComboxModel(comboBoxItems);

对于(i=0;i始终使用
equals
方法比较字符串:-

if (tmp.getName()!="")
应该是:-

if (!tmp.getName().equals(""))
或者如果要检查
空字符串,只需使用此:-

if (!tmp.getName().isEmpty()) {
    comboBoxItems.add(tmp.getName());
}
使用
equals()


使用
=
!=
比较字符串引用,而不是字符串内容。这几乎不是您想要的。

您必须将字符串与“equals”进行比较,然后它才会起作用

if(!tmp.getName().equals(""))comboBoxItems.add(tmp.getName())

使用
equals
方法来比较字符串。通过使用
!=
运算符,您可以比较字符串实例,因为它们(tmp.getName()和“”)不是相同的字符串实例,所以这总是正确的

改变

      tmp.getName()!=""


作为比较中的第一个字符串将处理
null
场景,也就是说,如果
tmp.getName()
null

您正在比较标识(=,!=),则它不会中断,但每个字符串实例都有自己的标识,即使它们相等

所以您需要执行
!tmp.getName().equals(“”

通常认为最好先从常量字符串开始,因为它永远不会为null:
!“”.equals(tmp.getName())

但是,我建议使用ApacheCommons lang StringUtils。它有一个
notEmpty()
notBlank()
方法来处理空处理和修剪

PS:有时标识对字符串有效。但不应该依赖它,因为它是由编译器或jvm优化引起的,因为字符串不可变。

使用

或:


始终使用equals方法检查字符串相等性。==运算符仅检查两个引用是否指向同一个字符串对象。

如果不在Java 6上且isEmpty不可用,另一种选择是:

if (tmp.getName.length()>0)

检查长度应该比使用.equals更快,尽管潜在增益很小,不值得太担心。

@BalázsCsíkos..不客气:)你最好使用最后一种方法,检查空字符串。根据数据,甚至可能是
!“”.equals(tmp.getName().trim())
      !"".equals(tmp.getName())
if(!tmp.getName().isEmpty())
if(!tmp.getName().equals(""))
if (tmp.getName.length()>0)