【发布时间】:2014-12-29 14:14:14
【问题描述】:
当下面的代码执行 i=0, j=0 and length = 9 and loops = 3时
令人惊讶的是,每行 i 增加了 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 , value 3 , value 4, Value5 , value12 , value q3 , value w4, val5]
我在最终结果中得到的只是值 3、Value5、值 q3 和 val5。
你现在明白我的问题了吗?
【问题讨论】:
-
Ewww;你为什么不直接
break如果i >= length而不是让.addInMappedElement()处理null? -
你的意思是在 2 次迭代后循环停止, j=2 和 i=10 ?
-
我自己写的! :|
-
@fge 我这样做了多少次?我 >= 长度;每行之后?我不认为这看起来很棒!
-
MyHelper.addInMappedElement是做什么的?