我如何遍历二维数组,将每个数字加倍,然后打印更新后的数组?
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;
}
就像问题所说的那样,我正在尝试获取下面列出的数组并遍历每个数字,将数字加倍,然后 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;
}