弄清楚代码的输出

时间:2016-03-01 21:13:07

标签: java

下面给出了一个代码,我需要找到输出。显然,我编译了代码,发现输出为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;
  }
}

有人想为我分解代码吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 

答案 2 :(得分:0)

我认为你的输出是错误的。

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

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

它只是为数组中的每个数字加上2:)