2016-06-22 7 views
0

私はプログラミングに慣れていないので、これは私の見解を完全に監視することができます。しかし、Ifタグの2つの値が同等であることを確認できます(下にあります)が、私の値が返されていません。返品時にループが終了しない

public static LANGUAGESTRING toLangString(String text) { 

    for (LANGUAGESTRING lang : LANGUAGESTRING.values()) { 
     String langStr = lang.toString(); 
     System.out.println(langStr); 
     System.out.println(text); 
     if (text == langStr) { 
      return lang; 
     } 
    } 
    return null; 
} 

これは印刷されたものです。これは私のLANGUAGESTRING列挙型ではありませんが、ここからポイントを得ることができます。それは、習慣を返す必要がありますよね? 5行目と6行目が同じであることを見ていますか?そしてそれを返すとしても、ループを壊すでしょうね。

[14:41:45] GodToBelieverPrayerWhenNoItemNeed 
[14:41:45] GodToBelieverPrayingWeak 
[14:41:45] GodToBelieverPrayerTooSoon 
[14:41:45] GodToBelieverPrayingWeak 
[14:41:45] GodToBelieverPrayingWeak 
[14:41:45] GodToBelieverPrayingWeak 
[14:41:45] EnterHolyLandInfoYourGod 
[14:41:45] GodToBelieverPrayingWeak 

答えて

1

==の代わりに.equalsを使用してください。

if(text.equals(langStr)) 
+0

(それらのメモリアドレスに格納されているものの内容が等しい、すなわち場合)コンテンツ平等で代わりに興味を持っています!速いヘルプありがとう!なぜそれが偶然であるのか私に説明することができますか? –

+0

==は、2つの変数がオブジェクトの同じ「参照」を指しているかどうかをチェックしています。 equals()メソッドは、2つのオブジェクトが同じかどうかをチェックします。したがって、参照チェックでは、2つのものが同じメモリ位置にあるかどうかを調べるのに対して、メソッドはデータが同じかどうかをチェックします。 – satnam

+0

またこちらをご覧ください:http://stackoverflow.com/questions/7520432/what-is-the-difference-between-vs-equals-in-java – satnam

1

ストリングequals()方法代わり==を使用すべきです。これは、参照平等のチェック(すなわち、2つの変数が同じメモリアドレスを指しているかどうか)をチェックすることによる。==あなたは、私はそれが行くあげる

This post explains this difference in more depth.

+0

Javaにはポインタがありません。 –

+0

@LutzHorn参考資料は十分に近いです。 – shmosel

関連する問題