1

我在班上的这种方法上遇到了麻烦。它总是返回假。乘客是一个单独的类别。这是我的火车类中的一个方法,它创建一个乘客对象的数组列表。我正在制作一种方法,它将在 ArrayList 乘客列表中搜索以名称作为参数的 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;
}
4

3 回答 3

4
 if (temp.getName() == a)

应该

 if (temp.getName().equals(a))

字符串比较应始终使用 equals() 方法而不是 == (字符串文字除外)。

如果temp.getName()两者a都没有指向同一个对象, == 条件将失败。

==检查引用是否相等。equals()检查内容是否相等。

教程可能会对您有所帮助。

于 2012-11-13T20:42:11.630 回答
2

if (temp.getName() == a)应该是if (temp.getName().equals(a))

前者比较引用是否相等。后者实际上检查字符串值是否相等。

于 2012-11-13T20:42:52.623 回答
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;
}
于 2012-11-13T21:03:31.680 回答