iT邦幫忙

0

java for強化循環

為啥麼著兩個輸出不一樣呢?

int num[] = new int[]{1, 9 ,6 ,2 ,8 ,4};
	 Arrays.sort(num);
	 for(int n:num)
		 System.out.print(n+", ");




int num[] = new int[]{1, 9 ,6 ,2 ,8 ,4};
	 Arrays.sort(num);
	 for(int n=0 ;n<num.length ;n++){
		 System.out.print(n+", ");

for(int n=0 ;n<num.length ;n++) 不是和for(n:num)是一樣的嗎?

2 個回答

10
外獅佬
iT邦大師 1 級 ‧ 2015-06-02 16:53:21

你『真的』沒搞懂迴圈、變數
你的第一段程式碼,依序輸出陣列的排序後元素
第二段程式碼,卻是依序輸出陣列的『索引值』
落寞

看更多先前的回應...收起先前的回應...
外獅佬 iT邦大師 1 級 ‧ 2015-06-02 16:55:19 檢舉

第一段程式的變數n,相當於第二段程式的num[n]
兩者的意思是完全不一樣的

李大瑋 iT邦研究生 3 級 ‧ 2015-06-02 17:18:38 檢舉

雖然看不懂
但是還是推.......

Ethan Jhuang iT邦研究生 3 級 ‧ 2015-06-03 08:27:51 檢舉

一針見血的答案

Ethan Jhuang iT邦研究生 3 級 ‧ 2015-06-03 08:27:51 檢舉

一針見血的答案

0
marsyang1
iT邦新手 4 級 ‧ 2015-06-03 18:15:45

眼花差點被騙...
for(int n:num) 會迭代陣列裡面的內容 , 所以n會是陣列裡面的值.
for(int n=0 ;n<num.length ;n++)只是推算for迴圈要跑幾次而已 , 值要自己取.
要用 num[n] 才會跟 foreach效果一樣.

&lt;pre class="c" name="code">
public void test1() {
        int[] num = new int[]{1, 9, 6, 2, 8, 4};
        Arrays.sort(num);
        for (int n : num)
            System.out.println(n + ", ");
        System.out.println("---------------------------------------");
        int[] num2 = new int[]{1, 9, 6, 2, 8, 4};
        Arrays.sort(num2);
        for (int n = 0; n &lt; num2.length; n++) {
            System.out.println(n + ", ");
        }
        System.out.println("---------------------------------------");
        int[] num3 = new int[]{1, 9, 6, 2, 8, 4};
        Arrays.sort(num3);
        for (int n = 0; n &lt; num3.length; n++) {
            System.out.println(num3[n] + ", ");
        }
    }

我要發表回答

立即登入回答