有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用递归打印从[0,0,0,0]到[9,9,9,9]I的数组

我只想使用递归打印一个从[0,0,0,0]到[9,9,9,9]的数组。 首先,我编写了如下代码:

public class PrintNumber {
    public static void main(String[] args) {
        int N = 4;
        int[] number = new int[N];
        PrintNumber printNumber = new PrintNumber();
        printNumber.printNum(number,0);
    }
    public void printNum(int[] number, int bit) {
        if (bit == number.length ) {
            System.out.println(Arrays.toString(number));
            return;
        }
        for (int i = 0; i < 10; i++) {
            number[bit] = i;
            /******** something goes wrong here ********/
            printNum(number, ++bit);
            /******** something goes wrong here ********/
        }
    }
}

正如你所看到的,虽然没有太多的代码,但它不起作用。 所以我调试了我的代码,发现++bit(代码的最后一行)应该写成bit+1。然后,它工作得很好

但我真的很困惑,为什么++bitbit+1都是将位增加1,为什么它不适用于++bit而适用于bit+1

非常感谢


共 (1) 个答案

  1. # 1 楼答案

    ++bitbit + 1之间有区别。表达++bit脱糖为本质上的bit = bit + 1*。所以你的台词变成了

    printNum(number, bit = bit + 1);
    

    所以变量bit的实际值在变化,因为你在循环中调用它,这个值会不断增加,这是不需要的。最终,当bit对于数组来说太大时,会得到一个ArrayIndexOutOfBoundsException


    *它实际上可能会被分解成更高效的JVM指令,但在语义上,它应该是等效的