2011-12-05 4 views
0

私はItemというクラスを検索するために書いたメソッドに問題があります。私が何を検索しても、nullを返しています。私は、変数のスコープの問題を抱えていると信じて:検索方法は常にnull

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

getNameメソッドは、項目のname属性を返します。 Item検索が常にnullであるにもかかわらず、これは変数のスコープに起因すると推測しています。なぜこのメソッドは常にnullですか?

あなたは

+4

もう一度String ==? –

+1

一致する 'Item'が見つかったら、ループを終了するには' break; 'を実行する必要があります。 –

+1

また、単に 'search'変数を取り除いて、何か見つかった場合には直接戻ります... –

答えて

4

は、Java内の2つの文字列の内容を比較するために==を使用することはできませんありがとうございました。 .equals()メソッドを使用する必要があります

==を使用すると、2つの文字列のアドレスだけが比較され、equalsは値が比較されます。

2

==を使用して文字列を比較しています。代わりにequals()メソッドを使用する必要があります。 E.G

i.getName().equals(itemSearch) 

また、ループ全体をループする代わりに、iを検索に割り当ててから検索する代わりに、if文でreturn iを使用します。

関連する問題