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()));
        }
    }
}
4

1 に答える 1

1

問題は、毎回budgets.iterator()新しいを返すため、もう使用していないポインターを移動することです。定義Iteratorbudgets.iterator().hasNext()Iterator

Iterator iterator = budgets.iterator();

それを残りのコードで使用します。

@Sachin J も正しいです。else ブロックにも iterator.next() を記述する必要があります。また、@Marko Topolnik申し訳ありませんが、あなたのコメントを見たばかりです。あなたのアイデアを盗もうとはしませんでした。

于 2012-05-25T11:48:13.393 に答える