1

我无法将一维数组传递给该方法,因为有一个二维数组参数。我无法删除 2d 数组参数,因为我的 2048 游戏板在该 2d 数组板主题上运行。有解决方法吗?我希望在tempslideUp上工作并仍然保留我的 2d 数组参数

public void slideUp(int[][] board) {
    for (int column = 0; column < board[0].length; column++) {
        int[] temp = getCol(board, column);
        slideUp(temp);
        for (int i = 0; i < board[0].length; i++) {
            board[i][column] = temp[i];
        }
    }
}

错误代码:不兼容的类型:int[] 无法转换为 int[][] slideUp(temp);

4

2 回答 2

1

作为一种解决方法,您可以创建一个接受的新方法int[],然后将一维数组表示为单行的二维数组,然后调用旧方法,如下所示:

public void callSlideUp(int[] row) {
    // a 2d array of a single row
    slideUp(new int[][]{row});
}

public void slideUp(int[][] board) { ... }
于 2021-03-24T15:48:37.240 回答
0

您可以通过创建另一个具有相同名称但使用一维数组作为参数的方法来重载该方法。

public void slideUp(int[] board) {
    //your code here
}

您必须更改它以处理一维数组。

 board[i][column]
于 2021-03-24T15:57:56.043 回答