在"找到岛屿"游戏程序。将读取用户的行数和列数,并使用char [] []数组创建游戏地图。问题是,虽然它编译并分配第一个字符没有问题,但之后我得到一个IndexOutOfRange异常并且必须终止该程序。下面张贴了代码段,标记了违规行。我该如何解决这个问题?
char[][] Waves = new char[Rows + 1][];
for (int counter = 0; counter < Rows+1; counter++)
Waves[counter] = new char[Columns];
MapRows = Rows;
MapCols = Columns;
for (int c = 0; c < Rows; c++)
{
for (int d = 0; d < Columns; d++)
{
if (c == 0 && d == 0)
Waves[c][d] = 'X';
else if (c == 0)
Waves[c][d] = (char)d; // Offending line here
else if (d == 0)
Waves[c][d] = (char)c;
else
Waves[c][d] = '~';
}
}
3x3地图的地图应如下所示(打印时会添加空格和换行符):
X123
1~~~
2~~~
3~~~
其次,更重要的是,我打算将地图打印到只读文本框。如何在结束该行并打印下一行字符之前将其写入从数组中打印一行字符的文本框? for循环很容易,打印它不是。