2016-03-01 115 views
-4

我給出了下面的代碼,我需要找到輸出。顯然,我編譯了代碼,發現輸出爲1 2 3 4 5 6 7 ,但我不明白爲什麼。找出代碼的輸出

public class ArrayTest { 
    public static void main(String[] args) { 
    int[] numbers = {1,2,3,4,5}; 
    for (int k=0;k<numbers.length;k++) 
     System.out.print(numbers[k]+" "); 
    doSomething(numbers,2); 
    for (int k=0;k<numbers.length;k++) 
     System.out.print(numbers[k]+" "); 
    } 
    public static void doSomething(int[] n, int i){ 
    for (int j=0; j<n.length;j++) 
     n[j] += i; 
    } 
} 

有人願意爲我分解代碼嗎?

+2

當我運行你的代碼時,我得到了'1 2 3 4 5 3 4 5 6 7' –

+1

我沒有得到你所說的輸出。 –

+0

這不是輸出。 – njzk2

回答

5

輸出實際上是1 2 3 4 5 3 4 5 6 7

doSomething(int[], int)只是將i添加到數組n中的每個元素。

第一個for循環將打印數組中的所有數字(「1,2,3,4,5」),然後對doSomething的調用將爲數組中的每個數字加2。因此,您在下面for循環中打印的新數組是3, 4, 5, 6, 7

0

你的輸出是錯誤的,我想。

第一for循環打印出1 2 3 4 5

第二for循環打印出3 4 5 6 7

它只是增加2到陣列:)

1

嘗試在每個號碼以添加新行System.out.print("\n");這樣:

 for (int k=0;k<numbers.length;k++) 
     System.out.print(numbers[k]+" "); 
     System.out.print("\n"); 
     doSomething(numbers,2); 

而且你將會輸出:

first for loop gives: 1 2 3 4 5 
second for loop gives: 3 4 5 6 7