我如何遍历二维数组,将每个数字加倍,然后打印更新后的数组?

How could I iterate through a 2D array, double each number, then print the updated array?

就像问题所说的那样,我正在尝试获取下面列出的数组并遍历每个数字,将数字加倍,然后 return 将新数字添加到数组中,完成后,调用打印新数组的方法。我最初的想法是,也许我可以通过 row/column 来获得数字,乘以 2,然后 return,但有人告诉我一些类似于 int can' t 被转换为 int[,]。我似乎无法弄清楚从这里去哪里。

int[,] array_2d = {{1, 2, 3},{ 4, 5, 6},{7, 8, 9}};

public static int[ , ] DoubleArray(int[ , ] array_2d){
for (int row = 0; row < 3; row++){
  for (int col = 0; col < 3; col ++){
    int val = array_2d[row,col];
    return val * 2;
  }
 }
}

还要说明一下,数组在main方法中,而这是一个单独的方法,需要在main方法中以数组作为参数调用。

提前致谢!

我认为你可以这样做:

public static int[,] DoubleArray(int[,] array_2d)
{
    for (int row = 0; row < 3; row++)
    {
        for (int col = 0; col < 3; col++)
        {
            array_2d[row, col] = array_2d[row, col] * 2;
        }
    }

    return array_2d;
}

public static void PrintArray(int[,] array_2d)
{
    for (int row = 0; row < 3; row++)
    {
        for (int col = 0; col < 3; col++)
        {
            Console.Write($"{array_2d[row, col]} ");
        }
    }
}

public static void Main(string[] args)
{
    int[,] array_2d = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

    var doubledArray = DoubleArray(array_2d);

    PrintArray(doubledArray);
}

您的 int-related 错误的原因是您将 return 类型声明为 'int[,]' 然后在您的 return 语句中,您试图 return 'int' 类型的值。为了解决这个问题,您需要 return 一个由您的 return 类型指定的 2d int 数组。我还建议动态获取数组的长度,而不是在这三个中进行硬编码。下面的代码应该可以完成这项工作。

public static int[,] DoubleArray(int[,] array_2d)
{
    for (int row = 0; row < array_2d.GetLength(0); row++)
    {
        for (int col = 0; col < array_2d.GetLength(1); col++)
            {
                int val = array_2d[row, col];
                array_2d[row, col] = val * 2;
            }
        }
    }
    return array_2d;
}

编辑:正如@hijinxbassist 指出的那样,这将修改原始数组,如果您想保留原始值,则可以使用下面稍作改动的函数。

public static int[,] DoubleArray(int[,] array_2d)
{
    int[,] newArray = (int[,])array_2d.Clone();

    for (int row = 0; row < newArray.GetLength(0); row++)
    {
        for (int col = 0; col < newArray.GetLength(1); col++)
            {
                int val = newArray[row, col];
                newArray[row, col] = val * 2;
            }
        }
    }
    return newArray;
}