数组的打印结果很难弄清

时间:2019-04-26 16:50:37

标签: java

我是Java的新手。我一直在进行此练习,遇到了一个我想找出的有趣问题。

我对它如何打印2,4,4和2,4,8感到困惑。我知道1和2,3,4的工作原理。

这是打印结果。

1 ,2 ,3 ,4

1 ,2 ,4 ,4

1 ,2 ,4 ,8

我尝试通过打印来检查array [idx]的工作方式(不在代码btw中),并且我知道在第一个循环中,array [idx]将为4,因为index [2]为3、3- 1 = 2,2 * 2 =4。

但是,我对第二个循环感到困惑,其中array [idx]为8。我认为index [3]为4,4-1 = 3,3 * 2 = 6?

这是代码。

public static void main (String[] args){
    int[] v = {1,2,3,4};
    print(v);
    fiddle(v, v[2]-1);
    print(v);
    fiddle(v, v[3]-1); 
    print(v);
}

public static void fiddle(int[] array, int idx) {
    array[idx] = array[idx - 1] * 2; 
}

public static void print(int[] array) {
    System.out.println(array[0]);
    for (int i = 1; i < array.length; i++){
        System.out.println(", " + array[i]);
    }
    System.out.println(); 
}

我只想知道小提琴和打印方法如何一起工作以获得2、4、4和2、4、8的结果。

1 个答案:

答案 0 :(得分:2)

原因是因为对fiddle方法的每次使用都从数组的先前状态开始。在调用小提琴之前,您并没有将阵列重置为其原始状态。

因此,在您进行第三次提琴演奏时,它使用[1,2,4,4],其中第三索引-1 = 4 * 2,即8

正如其他人在评论中说的那样,调试它可以为您节省一个问题。但是,由于您不熟悉Java,因此您可能还不知道这是可以的。我建议您学习如何在使用的任何IDE中使用调试器。