2015-02-06 31 views
-1

我有一個數組,我想通過以下方式通過for循環:使用2元素,然後跳過2個元素,然後使用2個元素等 因此,例如,如果我有和int數組: 1 2 3 4 5 6 7 8 9 10 我想使用1和2,然後跳過3和4,然後再次使用5,6跳過7,8等 這是可能的Java?通過你可以只使用數組循環時正常:Java循環,如何通過不同的值增加?

+1

是的,這是可能的。請顯示你的嘗試。 – 2015-02-06 17:51:33

+0

如果數組是「{1,2,3,4,5}」,它是否應該打印出'5'還是數組總是偶數? – Ascalonian 2015-02-06 18:09:47

回答

3

你可以做這樣的事情:

for (int i = 0; i < array.length - 1; i += 4) { 
    // work with i and (i + 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,所以我相信你希望減少2個數組的「OK」長度。

更新:實際工作的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; 
} 
+0

使用'i + 1'和'i = array.length - 1'時要小心。 – 2015-02-06 17:58:41

+0

我認爲它實際上應該是'array.length-3'的行,那麼,對吧?爲了確保我們可以跳過2 /使用2. – WOUNDEDStevenJones 2015-02-06 17:59:55

+0

我不認爲'array.length - 3'會這樣做,例如'int [] test = {0,1,2,3,4,5};'。 – 2015-02-06 18:00:58

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): 
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]); 
}