无法将 1d 数组传递给方法,因为有 2d 数组参数

Posted

技术标签:

【中文标题】无法将 1d 数组传递给方法,因为有 2d 数组参数【英文标题】:Can't pass 1d array into a method because there is a 2d array parameter 【发布时间】:2021-06-20 18:59:57 【问题描述】:

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

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);

【问题讨论】:

【参考方案1】:

作为一种解决方法,您可以创建一个接受 int[] 的新方法,然后将 1d 数组 表示为单行的 2d 数组,然后调用旧方法,类似这样:

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


public void slideUp(int[][] board)  ... 

【讨论】:

【参考方案2】:

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

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

你必须改变它来处理一维数组。

 board[i][column]

【讨论】:

以上是关于无法将 1d 数组传递给方法,因为有 2d 数组参数的主要内容,如果未能解决你的问题,请参考以下文章

将 C# 3D 数组作为 1D 字节数组传递给 C++ 库

将二维数组信息传递给 c# 中的方法

将二维数组传递给另一个类 C++

将数组从 VBA 传递到 VB.NET

尝试将自定义 C++ 矩阵传递给 numpy 数组

将 1D 向量作为行推入 2D 向量数组