2017-05-14 23 views
0

以下のコードのforループは一度だけ実行されます。私は似たような質問を見ていたが、それらは私がいない間にループのリストを編集するようなものである。リストを実行するjava forループは一度だけ実行されます

public String getProfileList(JSONObject obj, String uuid) { 
    JSONObject profile = (JSONObject) obj.get("profiles"); 

    @SuppressWarnings("unchecked") 
    ArrayList<String> list = new ArrayList<String>(profile.keySet()); 

    System.out.println(list); 

    for (String object: list) { 
     System.out.println(object); 
     String isUUID = (String) ((JSONObject) profile.get(object)).get("mpm-data:uuid"); 
     System.out.println(object + " == " + isUUID); 
     if (isUUID.equals(uuid)) { 
      System.out.println("TRUE"); 
      return object; 
     } 
    } 
    System.out.println("no profile found."); 
    return null; 
} 

このコードは、これを出力:あなたのコンソール出力の場合

[5fb4acd48e7d422eabecd82e32fb03c6, 44d01181eae635d31f2cefe5e1f75cd4,e0e96e422659dfdc1ad16d53a37ee618, a3ae7136f900457290e99bd657db0385] 
5fb4acd48e7d422eabecd82e32fb03c6 
5fb4acd48e7d422eabecd82e32fb03c6 == null 
+3

を確認してくださいexception.Can NULLポインタを投げる必要があるnullの場合、それは '可能ですisUUID .equals(uuid) 'がNullPoiを投げているnterException。代わりに 'uuid.equals(isUUID)'を試してみてください。 – Eran

+1

それを実行する前に、おそらくどこかにあり例外を隠しているcatch(Exception)を削除してください。 –

+0

@Elanそれでした。どうもありがとうございました。 – mrjvs

答えて

1

あなたはisUUIDnullであることがわかります。つまり、メソッドequalsを呼び出そうとすると、呼び出すオブジェクトは実際にはなく、NullPointerExceptionになるはずです。

uuid.equals(isUUID)が良いだろう:それはあなたがは、左側にはnullではありません知っている一部でequals表明を行うことをお勧め理由です。

"myCompareString".equals(myVariable)、「myCompareStringは」myVariable缶に対し、nullになることはありませんので、:あなたは、変数や静的な文字列でequalsアサーションをすれば、それはそうのようにそれを行うのがベストであることを

注意してください。

1
System.out.println(object + " == " + isUUID); 

コードが印刷さ 5fb4acd48e7d422eabecd82e32fb03c6を参照して、ヌルを自分で処理する必要がありませんコモンズ-lang.jarでStringUtils.equals(文字列STR1、文字列STR2)を使用することができますあなたが使用している== nullで、次の文の条件.IF isUUIDが、それはあなたが `isUUID`は` null`なのでので、この時点

if (isUUID.equals(uuid)) { 
      System.out.println("TRUE"); 
      return object; 
     } 
関連する問題