簡體   English   中英

對於Java中的每個循環

[英]For-each Loop in Java

我有一個示例代碼,它創建一個大小為10的“數組”,並嘗試在For循環中使用反向值初始化它,例如:(9,8,7,6,5 ... 0):

int[] array = new int[10];
        for (int i = array.length - 1, j = 0; i >= 0; i--, j++) {
            System.out.println("Present value of i=" + i
                    + " Present value of j=" + j);
            array[j] = i;
            System.out.println("Array:" + j + "=" + i);
        }
        for (int k : array) {
            System.out.println(array[k]);
        }

到現在為止還挺好。 這是控制台的輸出,非常完美:

Present value of i=9 Present value of j=0
Array:0=9
Present value of i=8 Present value of j=1
Array:1=8
Present value of i=7 Present value of j=2
Array:2=7
Present value of i=6 Present value of j=3
Array:3=6
Present value of i=5 Present value of j=4
Array:4=5
Present value of i=4 Present value of j=5
Array:5=4
Present value of i=3 Present value of j=6
Array:6=3
Present value of i=2 Present value of j=7
Array:7=2
Present value of i=1 Present value of j=8
Array:8=1
Present value of i=0 Present value of j=9
Array:9=0

問題是For-each循環最后只是打印數組中的值:

for (int k : array) {
            System.out.println(array[k]);
        }

打印數組的值為0,1,2 ... 9,其中應為9,8,7 ... 0

當我使用常規For循環打印數組時,它可以正常工作。 我在這里錯過了一些有趣的事嗎?

您已經使用foreach循環從array獲取值,您將其再次用作數組中的索引,再次按順序生成值。

只需打印k 更改

for (int k : array) {
    System.out.println(array[k]);
}

for (int k : array) {
    System.out.println(k);
}

輸出結束:

9
8
7
6
5
4
3
2
1
0

基本上,因為(int k : array)導致k遍歷數組中的而不是索引,所以你所做的相當於

System.out.println(array[array[0]]);
System.out.println(array[array[1]]);
System.out.println(array[array[2]]);
System.out.println(array[array[3]]);
...
System.out.println(array[array[9]]);

這不是你想要的。

這個for循環,對於(int k:array)基本上給你詳細的數組值這個for循環就像 -

int k = array [0] = 9 int k = array [1] = 8 .....

再次你試圖打印數組[9],數組[8]給你的結果像0,1,2 ...替換為( int k:array){ System out println (array [k]); }

with for( int k:array){ System out println (k); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM