2011-12-05 78 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語句中,而不是分配我搜索,然後返回搜索。