2012-05-25 6 views
1

질문 : 반복자를 중첩 루프로 직접 증가시키는 방법이 있습니까? 예반복자 중첩 루프

while(budgets.iterator().hasNext()){ 
    if(budgets.iterator().next().getTipoBudget()!="I"){ 
     if(budgets.size()<maxInviate){ 
      for(i=0; i<maxInviate ;i++){ 
       if(budgetArray[i]==0 && budgets.iterator().hasNext()){ 
        budgetArray[i] = budgets.iterator().next().getBudgetField(); 

       } 
      } 
      i=0; 
      Set budgetSet = new HashSet<Integer>(Arrays.asList(budgetArray)); 
      Integer min = Collections.min(budgetSet); 
      valueAdw = valueAdw + min; 
      for(i=0; i<maxInviate; i++){ 
       budgetArray[i] = budgetArray[i] - valueAdw; 
      } 
     }else{ 
      valueAdw = null; 
      valueAdwEnd = null; 
      campaigns.addLast(new Campaign(valueAdw, valueAdwEnd, (long) adwordsBudget.getZona().getAdwordsCode())); 
     } 
    } 
} 
+5

next()를 호출하는 것이 "increment"와 같을 수도 있습니다. –

+0

또한, iterator(). next()를 호출하면 반환 된 Object를 실제로 사용할 수 있도록 어딘가에 저장해야합니다. "(예산 b : 예산) {}"에 대해 – grahamrb

+0

예산을 추가하십시오. else() 블록에 다음 예산을 추가하십시오. –

답변

1

문제는 너무 budgets.iterator().hasNext()는 더 이상 사용하지 않을 것이라는 Iterator에서 포인터를 이동 budgets.iterator() 새로운 Iterator 모든 시간을 반환합니다. 정의

Iterator iterator = budgets.iterator(); 

나머지 코드에서 사용하십시오.

또한 @Sachin J가 맞습니다. iterator.next()를 else 블록에도 작성해야합니다. 또한 @Marko Topolnik 미안하지만 난 당신의 의견을 보았습니다, 나는 당신의 아이디어를 훔치려 고하지 않았습니다.