java 调用返回数组的方法时卡住[已关闭]

bq9c1y66  于 2022-12-17  发布在  Java
关注(0)|答案(1)|浏览(132)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
22小时前关门了。
Improve this question
我对编程很陌生,所以如果你不批评我,我会很高兴。我正在努力做作业,我在一个问题上卡住了。

public static int[] decimalToBinary(int number) {
    int[] binary = new int[9];
    int remainder = 0;
    int i = 0;
    while(i < binary.length) {
        remainder = number % 2;
        binary[binary.length - i - 1] = remainder;
        number /= 2;
        i++;
    }
    return binary;
}

我将此方法用作帮助器方法。

public static char[][] headsNtails(int number) {
    int counter = 0;
    int[] array = decimalToBinary(number);
    int[][] decimalCoins = new int[3][3];
    for(int i = 0; i < decimalCoins.length; i++) {
        for(int j = 0; j < decimalCoins.length; j++) {
            decimalCoins[i][j] = array[counter];
            counter++;
        }
    }
    char[][] charCoins = new char[3][3];
    for(int i = 0; i < charCoins.length; i++) {
        for(int j = 0; j < charCoins.length; j++) {
            if(decimalCoins[i][j] == 1)
                charCoins[i][j] = 'T';
            else
                charCoins[i][j] = 'H';
        }
    }
    return charCoins;
}

当我在main中调用headsNtails方法来显示字符数组时,什么也没发生。我没有收到错误,但是当我调试时,我看到当我调用decimalToBinary方法时程序卡住了。

public static void main(String[] args) {
    char[][] charArray2D = headsNtails(7);
    display2D(charArray2D);
}

我的main方法是这样的。display2D是一个显示二维数组中所有字符的方法。

public static void display(int[] array) {
    for (int i : array) {
        System.out.printf("%d\t", i);
    }
    System.out.println();
}

public static void display2D(char[][] array2D) {
    for (char[] row : array2D) {
        display(row);
    }
    System.out.println("--------------------------");
}

public static void display(double[] array) {
    for (double i : array) {
        System.out.printf("%.1f\t", i);
    }
    System.out.println();
}

public static void display(int[] array) {
    for (int i : array) {
        System.out.printf("%d\t", i);
    }
    System.out.println();
}

public static void display(char[] array) {
    for (int i : array) {
        System.out.printf("%c\t", i);
    }
    System.out.println();
}
ehxuflar

ehxuflar1#

为了能够遍历一个二维数组,你需要一个嵌套的for循环,第一个循环将遍历rows,第二个循环将遍历columns,下面是你如何重写display2D方法的例子。

public static void display2D(char[][] array2D) {
    for(int i = 0; i < array2D.length; i++) {
        for(int j = 0; j < array2D[i].length; j++) {
            display(array2D[i]);
  }
}
    System.out.println("--------------------------");
}

还要注意,display方法需要char数组,因此需要将参数从int[]更改为char[]

相关问题