2016-06-15 4 views
-1

HashMapのすべての部分をforループを使用して循環させようとしています。しかし、問題は、forループの本体の内部で、コードが完全に実行されていないことです。すなわち、特定のポイントにのみ起こっている、とstopping.Myコードは、ある:それはForループですべてのコードを実行していません

public static void printCombination(String arr[], int n, int r) 
{ 
    // A temporary array to store all combination one by one 
    Log.e("ERROR","ATLEAST I'M INSIDE"); 
    String data[]=new String[r]; 
    for(int no = 0;no<arr.length;no++){ 
     boolean decider = true; 
     if (latest.cart_names.size()>0) { 
      for (Map.Entry<String, Map<String, Integer>> entry : latest.cart_names.entrySet()) { 
       Log.e("ERROR", "ATLEAST I'M INSIDE 1"); 
       String arrayElement = arr[no]; 
       Map<String, Integer> outerMapValue = entry.getValue(); 
       Log.e("ERROR", "ATLEAST I'M INSIDE 2"); 
       if (outerMapValue.containsKey(arrayElement)) { 
        Log.e("ERROR", "ATLEAST I'M INSIDE 3"); 
        if (outerMapValue.get(arrayElement) != null) { 
         Log.e("ERROR", "ATLEAST I'M INSIDE 4"); 
         if (outerMapValue.get(arrayElement) > 0) { 
          return; 
         }else{ 
          Log.e("ERROR", "ATLEAST I'M INSIDE 5"); 
          decider = false; 
         } 
        } 
       } 
      } 
      Log.e("ERROR",Boolean.toString(decider)); 
      Log.e("ERROR",Integer.toString(finalmap.size())); 
      if (finalmap.size()==0) { 
       if (decider) { 
       Log.e("ERROR", "ATLEAST I'M INSIDE 8"); 
       for (int rt = 0; rt < latest.cart_names.size(); rt++) { 
        Log.e("ERROR", "ATLEAST I'M INSIDE 6"); 
        finalmap.add(rt,arr[no]); 
       } 
      } 
     }else{ 
      if (decider) { 
       int sum1 = 0; 
       int sum2 = 0; 
       for (Map.Entry<String, Map<String, Integer>> entry : latest.cart_names.entrySet()) { 
        sum1 += latest.cart_names.get(entry.getKey()).get(finalmap); 
        sum2 += latest.cart_names.get(entry.getKey()).get(arr[no]); 
       } 
       Log.e("ERROR",Integer.toString(sum1)); 
       Log.e("ERROR",Integer.toString(sum2)); 
       if (sum2>sum1){ 
        for (int rt = 0; rt < latest.cart_names.size(); rt++) { 
         Log.e("ERROR", "ATLEAST I'M INSIDE 7"); 
         finalmap.add(arr[no]); 
        } 
       } 
      } 

      } 
    }} 

をログに記録されていない行:

Log.e("ERROR",Boolean.toString(decider)); 
Log.e("ERROR",Integer.toString(finalmap.size())); 

答えて

3

この条件が満たされると復帰/退出します方法...

if (outerMapValue.get(arrayElement) > 0) { 
    return; 

編集:

@peteyとコメントし@Andrew Lなど(提案をありがとう(:)

は、Javaのベストプラクティスを見て、どのように継続するとブレーク文は、現在の反復をスキップするために使用することができbranching control statement

を使用するために検討すべきですfor、 while、do-whileループ。

+1

ガイダンスのためだけにcontinueキーワードを使用する必要があります。彼がループを終了して残りを実行したい場合は、breakを推奨します。 – Li357

+1

'break'の正しいキーワードを提供し、' return'を使うより別の方法でforループを止める方法を説明してください。 – petey

+0

あなたの提案を@AndrewLに追加しますが、コメントのおかげで.... –

0

ループ内にreturnステートメントがあるため、リストする行を記録していないと思います。その時点でループを終了させて​​も行を記録する場合は、代わりにbreakを使用してください。

関連する問題