我在C控制台应用程序中遍历二维数组的一维时遇到问题。这是一个游戏的一部分,每当你错过一次投篮,或者你成功投篮时,都会有机智的反应。让我从我做的二维布尔值开始:
public static bool[,] hasResponseBeenUsedBefore = new bool[2, 11];
第一个维度中有两行。1是在拍摄成功的情况下伴随响应。第二种是在漏掉一枪的情况下伴随着回应。
在我为生成响应而创建的方法中,我尝试遍历第二个维度。
int usedManyTimes = 0;
for (int i = 0; i < hasResponseBeenUsedBefore.GetLength(1); i++)
{
MessageBox.Show(i.ToString());
if (hasResponseBeenUsedBefore[2, i] == true) // 2 is the dimension for unsuccessful responses
{
usedManyTimes++;
}
}
我试图得到第二维度的长度,但没有成功。它抛出一个
IndexOutOfRangeException
,其中包含以下信息:hresult:-2146233080
异常消息:索引超出数组的边界。
在此方面的任何帮助都将不胜感激。谢谢你的时间。
最佳答案
要获取“不成功”维度,请使用1
,而不是2
:
if (hasResponseBeenUsedBefore[1, i] == true)
数组使用基于零的索引。当您定义如下数组时:
var hasResponseBeenUsedBefore = new bool[2, 11];
您可以使用
hasResponseBeenUsedBefore[0][0]
到hasResponseBeenUsedBefore[1][10]
访问它的元素。