寻找元素

时间:2013-04-07 14:54:30

标签: java string comparison

我有这个方法:

public User findById(String name) 
{
    for (User u : list) 
    {
        if (u.getFirstName() == name) 
        {
            return u;
        }
    }
    return null; // or empty User
}

如何在我的窗口类中编写方法,以便打印出我找到的用户?

这就是我得到的。 (想想离开)

public void findCustomer()
{
    String firstname = findCustomerField.getText();

    if(!firstname.equals(""))
    {
        String result = list.findById(firstname);
        outputText.setText(result);

    }

}

3 个答案:

答案 0 :(得分:1)

请勿在比较中使用==

if (u.getFirstName() == name) 

但是equal

if (u.getFirstName().equal(name)) 

运算符==测试两个对象引用变量是否引用对象的完全相同的实例。

方法.equals()测试以查看彼此比较的两个对象是否相同

您还需要像这样更改您的findCustomer方法

public void findCustomer()
{
    String firstname = findCustomerField.getText();

    if(!"".equal(firstname))
    {
        User user = list.findById(firstname);
        if(user != null)
        {
            outputText.setText(user.getFirstName());
        }
    }
}

答案 1 :(得分:0)

使用String.equals()进行等式检查。

将其更改为:

if (u.getFirstName().equals(name)) {

==基本上是对象引用相等性检查。

答案 2 :(得分:0)

String result = list.findById(firstname);

您的findById会返回一个用户,因此请将其更改为:

User result = list.findById(firstname);

因此,将您的下一行更改为:

outputText.setText(result.getFirstName());