for(int k=0;k <= odds.GetLength(-1);k++)
上面的代碼行應該遍歷Double類型的二維數組,但會一直拋出以下異常。索引超出範圍例外。有人會善意解釋爲什麼並提供解決方案。非常感謝。迭代2維數組c#
for(int k=0;k <= odds.GetLength(-1);k++)
上面的代碼行應該遍歷Double類型的二維數組,但會一直拋出以下異常。索引超出範圍例外。有人會善意解釋爲什麼並提供解決方案。非常感謝。迭代2維數組c#
您正在向GetLength
傳遞無效索引。多維數組的維數基於0
,因此-1
無效,並且使用負數(或大於維數 - 1的數字)將導致IndexOutOfRangeException
。
這將環比第一尺寸:
for(int k=0;k < odds.GetLength(0);k++)
您需要添加另一個循環都要經過第二個維度:
for(int k=0;k < odds.GetLength(0);k++)
for(int l=0;l < odds.GetLength(1);l++)
var val = odds[k,l];
絕對精彩!非常感謝你! – user995689
循環的條件部分應指定'<'而不是'<=',否則您將退出索引異常。 – John
@John - 謝謝。你可以建議直接編輯:) – Oded
如果odds
是一個二維數組,那麼它的尺寸將被稱爲0
和1
。嘗試訪問維度-1
將產生一個IndexOutOfRangeException
。
GetLength
是從零開始的。嘗試撥打GetLength(0)
。
好,usualy當你要遍歷一個二維數組:
for(int col = 0; col < arr.GetLength(0); col++)
for(int i = row; row < arr.GetLength(1); row++)
arr[col,row] = /*something*/;
數組是始終從零開始,所以沒有嘗試在-1指數得到的東西點。
我看到一個或兩個問題根據打算如何使用它:
首先,對GetLength(IND尺寸)返回指定的尺寸的長度,從0開始在一個二維陣列的情況下,正確的索引將是0和1.
第二個問題是,您正在做< =而不是< for循環條件,這可能也超出了自上一個索引是長度爲1,而不是長度的邊界。
StriplingWarrior和Gilad Naaman發佈了代碼示例,所以我將跳過它。
謝謝你指出<=這個問題到目前爲止我還沒有明確的問題,但現在你的評論已經有所幫助了。 TY。 – user995689
string[,] arr = new string[2, 3];
arr[0, 0] = "0,0";
arr[0, 1] = "0,1";
arr[0, 2] = "0,2";
arr[1, 0] = "1,0";
arr[1, 1] = "1,1";
arr[1, 2] = "1,2";
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
Response.Write(string.Format("{0}\t", arr[i, j]));
}
Response.Write("<br/>");
}
你是否在循環中的任何點更改'賠率'的內容? – ChrisBint
我認爲你應該添加更多的代碼。也許你可以使用foreach? –
是以下面的方式'code'win + = odds [1,k] * unitStake; 'code' – user995689