当下面的代码执行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。
你现在问我的问题吗?
答案 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) ;
}
乙 - )