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