您好我正在使用此代码向我的ComboBox添加元素,我不想添加空元素,这里是代码:
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());
}
}
我的问题是if语句不起作用,它仍然在我的组合框中添加空名称。我做错了什么?
答案 0 :(得分:1)
始终使用equals
方法比较字符串: -
if (tmp.getName()!="")
应该是: -
if (!tmp.getName().equals(""))
或仅使用此,如果您要查看empty string
: -
if (!tmp.getName().isEmpty()) {
comboBoxItems.add(tmp.getName());
}
答案 1 :(得分:1)
使用equals
方法比较字符串。通过使用!=
运算符,您将比较字符串实例,它们始终为true,因为它们(tmp.getName()和“”)不是相同的字符串实例。
更改
tmp.getName()!=""
到
!"".equals(tmp.getName())
将""
作为第一个字符串进行比较将会处理您的null
方案,即如果tmp.getName()
为null
,则不会中断。强>
答案 2 :(得分:0)
使用equals()
:
if (!tmp.getName().equals(""))
使用==
或!=
比较字符串引用,而不是字符串内容。这几乎不是你想要的。
答案 3 :(得分:0)
你必须将字符串与“等于”进行比较,然后才能正常工作
if(!tmp.getName().equals(""))comboBoxItems.add(tmp.getName())
答案 4 :(得分:0)
你正在比较身份(==,!=),但每个String实例都有自己的身份,即使它们是相同的。
所以你需要做!tmp.getName().equals("")
。
通常,最好首先从常量字符串开始,因为它永远不会为null:!"".equals(tmp.getName())
但是,我建议使用apache commons lang StringUtils。它有notEmpty()
和notBlank()
方法,可以处理空值处理和修剪。
PS:有时身份适用于Strings。但不应该依赖它,因为它是由于字符串不变性导致的编译器或jvm优化引起的。
答案 5 :(得分:0)
if(!tmp.getName().isEmpty())
OR:
if(!tmp.getName().equals(""))
始终使用equals方法检查字符串相等性。 ==运算符仅检查两个引用是否指向同一个String对象。
答案 6 :(得分:0)
如果没有Java 6并且isEmpty不可用,则另一种选择是:
if (tmp.getName.length()>0)
检查长度应该比使用.equals更快,尽管潜在的增益很小,不值得担心太多。