2011-12-05 44 views
0

我遇到了一个我编写的用于搜索名为Item的类的方法问题。无论我搜索什么,它都返回null。我相信我遇到了可变范围问题:搜索方法始终为空

public Item search(String itemSearch) { 
    Item search = null; 
    for(Item i : items){ 
     if (i.getName() == itemSearch){ 
     search = i; 
     } 
    } 
    return search; 
    } 

getName方法返回该项目的name属性。无论Item搜索总是为空,我猜这是由于变量的作用域,而不是在每个循环中赋值?为什么此方法始终为空?

谢谢

+4

再次使用String ==? –

+1

请注意,找到匹配的'Item'后,应该'break;'退出循环。 –

+1

或者只是完全摆脱“搜索”变量,直接返回,如果你发现一些东西...... –

回答

4

您不能使用==比较java中两个字符串的内容。您需要使用.equals()方法

使用==将只比较两个字符串的地址,而equals将比较它们的值。

2

您正在使用==比较字符串。你应该改用equals()方法。 E.G

i.getName().equals(itemSearch) 

而不是循环整个循环使用返回我在if语句中,而不是分配我搜索,然后返回搜索。