我在上课这个方法时遇到了麻烦。它总是返回false。 乘客是一个单独的班级。这是我的Train类中的一个方法,它创建了一个Passenger对象的数组列表。我正在创建一个方法,它将在ArrayList passengerList中搜索名称为参数的Passanger对象。
public boolean search(String a){
Passenger temp;
boolean query = false;
for (int i =0; i<passengerList.size(); i++)
{
temp=passengerList.get(i);
if (temp.getName() == a)
{
query = true;
}
}
return query;
}
答案 0 :(得分:4)
if (temp.getName() == a)
应该是
if (temp.getName().equals(a))
字符串比较应始终使用equals()方法而不是==(字符串文字除外)。
如果temp.getName()
和a
都没有指向同一个对象,则==条件将失败。
==
检查引用是否相等。 equals()
检查内容是否相等。
此tutorial可能会对您有所帮助。
答案 1 :(得分:2)
if (temp.getName() == a)
应为if (temp.getName().equals(a))
。
前者比较了相等的参考。后者实际上会检查字符串值是否相等。
答案 2 :(得分:0)
我建议将此代码编写得更优雅,更清晰(检查为null):
public boolean search(String a){
boolean query = false;
for (Passenger temp : passengerList)
{
if (temp != null && temp.getName()!=null && temp.getName().equals(a))
{
query = true;
}
}
return query;
}