为什么i ++在这里循环两次?

时间:2014-12-29 14:14:14

标签: java for-loop iteration

当下面的代码执行i = 0,j = 0且length = 9且loops = 3

令人惊讶的是,每一行,我增加了2而不是1。

你能说出原因吗?

        String arr[] = stringToSplit.split(delimiter);
        int length = arr.length;
        int loops = length/4+length%4;
        for(int i=0,j=0; j<loops && i<length; j++){
            DummyClass dummyClass= new DummyClass ();
            MyHelper.addInMappedElement(i<length?arr[i++]:null, value1, dummyClass) ;
            MyHelper.addInMappedElement(i<length?arr[i++]:null, value2, dummyClass) ;
            MyHelper.addInMappedElement(i<length?arr[i++]:null, value3, dummyClass) ;
            MyHelper.addInMappedElement(i<length?arr[i++]:null, value4, dummyClass) ;
        }

注意:我知道在完成一个循环后我应该增加4次但这不是这里的情况。例如:如果数组是[Value1,value2,value3,value4,Value5,value12,value q3,value w4,val5]

我在最终结果中映射的只是值3,Value5,值q3和val5。

你现在问我的问题吗?

3 个答案:

答案 0 :(得分:3)

每次迭代都有4个i++语句,因此它实际上最多增加4次(只要i<length)。

答案 1 :(得分:1)

i++与:

相同
int temp = i;
i = i + 1;   ← i is actually changed ¯\_(ツ)_/¯
return temp;

i在您的代码中增加了4次。

答案 2 :(得分:0)

得到了修复:

 for(int i=0,j=0; j<loops && i<length; j++){
        DummyClass dummyClass= new DummyClass ();
        MyHelper.addInMappedElement(i<length?arr[i++].toString():null, value1, dummyClass) ;
        MyHelper.addInMappedElement(i<length?arr[i++].toString():null, value2, dummyClass) ;
        MyHelper.addInMappedElement(i<length?arr[i++].toString():null, value3, dummyClass) ;
        MyHelper.addInMappedElement(i<length?arr[i++].toString():null, value4, dummyClass) ;
    }

乙 - )