就像問題說的那樣,我正在嘗試獲取下面列出的陣列并遍歷每個數字,將數字加倍,然后將新數字回傳到陣列中,當一切都完成后,呼叫該方法來列印新陣列。我最初的想法是,也許我可以按行/列遍歷并以這種方式獲得數字,乘以 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 中以陣列作為引數呼叫。
提前致謝!
uj5u.com熱心網友回復:
您的 int 相關錯誤的原因是您將回傳型別宣告為“int [,]”,然后在您的 return 陳述句中,您試圖回傳一個型別為“int”的值。為了解決這個問題,您需要回傳一個由您的回傳型別指定的 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;
}
uj5u.com熱心網友回復:
我認為你可以這樣做:
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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/443578.html
上一篇:創建環境物件
