C#IndexOutfrange数组异常
我正在尝试创建一个2D字符数组来保存一个字符网格,它将被用作2D控制台游戏的一种“地图” 我得到一个: 索引自动失效例外 …也不明白为什么。我已经在调试模式下逐步完成了代码,但仍然看不到问题所在 它会一步一步地遍历代码,直到它到达我的网格的右上边界C#IndexOutfrange数组异常,c#,arrays,C#,Arrays,我正在尝试创建一个2D字符数组来保存一个字符网格,它将被用作2D控制台游戏的一种“地图” 我得到一个: 索引自动失效例外 …也不明白为什么。我已经在调试模式下逐步完成了代码,但仍然看不到问题所在 它会一步一步地遍历代码,直到它到达我的网格的右上边界X=25和Y=1 我创建了\u gameWidth和\u gameHeight如下,在main之外,但仍然在类内部: static int _gameWidth = 25; static int _gameHeight = 15; 以下是尝试生成和填
X=25
和Y=1
我创建了\u gameWidth
和\u gameHeight
如下,在main之外,但仍然在类内部:
static int _gameWidth = 25;
static int _gameHeight = 15;
以下是尝试生成和填充网格时失败的代码。在这一点上它失败了:
else if (x == _gameWidth && y == 1)
_grid[x, y] = '╕';
static void GenerateGrid()
{
for (int y = 1; y <= _gameHeight; y++)
{
for (int x = 1; x <= _gameWidth; x++)
{
if (x == 1 && y == 1)
_grid[x, y] = '╒';
else if (x == _gameWidth && y == _gameHeight)
_grid[x, y] = '╛';
else if (x == _gameWidth && y == 1)
_grid[x, y] = '╕';
else if (x == 1 && y == _gameHeight)
_grid[x, y] = '╘';
else if ((x != 1 && y == _gameHeight) || (x != _gameWidth && y == 1))
_grid[x, y] = '═';
else if ((x == 1 && y > 1 && y < _gameHeight) || (x == _gameWidth && y > 1 && y < _gameHeight))
_grid[x, y] = '│';
else
_grid[x, y] = 'x';
}
Console.WriteLine("");
}
}
else if(x==\u gameWidth&&y==1)
_网格[x,y]='╕';
静态void GenerateGrid()
{
用于(整型y=1;y 1和y<\u游戏高度))
_网格[x,y]='│';
其他的
_网格[x,y]=“x';
}
控制台。写线(“”);
}
}
更改
for (int i = 1; i <= gameHeight; i++)
for(int i=1;i此异常表示您访问了无效的索引。从您编写循环的方式,我可以看出您认为索引从1到数组的长度。不过,数组是基于零的。请使用标准循环形式:
for (int i = 0; i < length; i++)
for(int i=0;i
循环从1开始。您可以使用Visual Studiofor
循环模板。只需键入“for”
您的程序可能会从代码复查堆栈交换站点中受益。我们错过了网格[,]
问题解决的声明。感谢您的快速回复。我很高兴,尽管选择了另一个作为正确答案,但此答案的投票率更高:p
for (int i = 0; i < length; i++)