我有一个数组,我想通过以下方式使用for循环来完成它:使用2个元素然后跳过2个元素,然后使用2个元素等。
例如,如果我有和int数组:1 2 3 4 5 6 7 8 9 10
我想使用1和2然后跳过3和4,然后再次使用5,6跳过7,8等。
这可能在java中吗?
答案 0 :(得分:3)
您可以这样做:
for (int i = 0; i < array.length - 1; i += 4) {
// work with i and (i + 1)
}
答案 1 :(得分:2)
这段伪代码的某些部分将完成这项工作:
for (int i=0; i<array.length-3; i+=4) {
int first = array[i];
int second = array[i+1];
//int third = array[i+2]; //skip this
//int fourth = array[i+3]; //skip this
}
注意:通常在循环遍历数组时,您只需使用i<array.length-1
,但因为您可能在此时跳过2,我相信您希望将数组的“OK”长度减少2个。 / p>
更新:使用切换实际工作的Java代码:
boolean skip = false;
for (int i=0; i<test.length-1; i+=2) {
if (!skip) {
System.out.println(test[i]);
System.out.println(test[i+1]);
}
//int third = array[i+2]; //skip this
//int fourth = array[i+3]; //skip this
skip = !skip;
}
答案 2 :(得分:2)
是的,你需要一个循环,但两个会更简单。
for (int i = 0; i < N; i += 4)
for (int j = i; j < i + 1; j++)
System.out.println(j);
你也可以
IntStream.range(0, N)
.flatMap(i -> IntStream.range(i+1, i+3))
.forEach(System.out::println):
答案 3 :(得分:0)
您可以在for
循环内引入任意数量的变量并迭代这些变量。它类似于使用两个循环,其优点是没有进行额外的迭代。
这里最重要的是你每次都要跳过阵列中的四个条目。这适用于两个变量,并且您还希望确保它们都小于整个数组的长度(因此您不会错误地离开它)。
for (int i = 0, j = i + 1; i < array.length && j < array.length; i += 4, j += 4) {
System.out.printf("(%d, %d) ", array[i], array[j]);
}