如何迭代二维数组,将每个数字加倍,然后打印更新后的数组



就像问题所说的,我正在尝试使用下面列出的数组,遍历每个数字,将数字加倍,然后将新数字返回给数组,完成后,调用该方法打印新数组。我最初的想法是,也许我可以按行/列遍历,这样得到数字,乘以2,然后返回,但我被告知,沿着int线的某些东西无法转换为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中以数组为参数进行调用。

提前感谢!

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

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

我认为你可以这样做:

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

最新更新