首页 > 解决方案 > 数组的打印结果很难弄清楚

问题描述

我是这里的 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] 的工作原理(而不是在代码中),我知道在第一个循环中,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(); 
}

我只想知道 fiddle 和 print 方法如何协同工作以获得 2、4、4 和 2、4、8 的结果。

标签: java

解决方案


原因是因为每次使用 fiddle 方法都是从数组的前一个状态开始的。在调用 fiddle 之前,您不会将数组重置回其原始状态。

所以在你的第 3 次小提琴调用的情况下,它使用 [1,2,4,4] 其中第 3 个索引 - 1 = 4 * 2 是 8

正如其他人在评论中所说,调试这将为您节省一个问题。但是,由于您是 Java 新手,您可能不知道什么是好的。我建议学习如何在您使用的任何 IDE 中使用调试器。


推荐阅读