3 回答
TA贡献1827条经验 获得超7个赞
正如其他人在评论中已经指出的那样,您无法j在声明它的循环之外访问。因此,您要么必须在循环j 之前声明,要么以不同于重用的方式访问最后一个索引j。
话虽如此,目前还不清楚您想用代码做什么,而且您可能根本不想在Console.Write那里使用它。
顺便说一句,您的代码有一个大问题:
for (int x = 0; x < cusName.GetLength(x); x++)
x只要它小于 ,这个 for 循环就会递增cusName.GetLength(x)。Array.GetLength用于获取多维数组中某个维度的元素数。由于您的数组有两个维度,因此您可以进行的唯一有效调用GetLength 是GetLength(0)针对第一个维度和GetLength(1)第二个维度。有一个变量,尤其是在循环中递增的变量,很可能会中断。
我假设您最初想做这样的事情:
for (int x = 0; x < cusName.GetLength(0); x++)
{
for (int j = 0; j < cusName.GetLength(1); j++)
{
Console.Write("{0} ", cusName[x, j]);
}
}
如果你想在循环之后继续使用循环变量,你可以在之前声明它:
int j;
for (j = 0; j < cusName.GetLength(1); j++)
{
…
}
Console.Write(j);
请注意,在循环之后,j具有值,cusName.GetLength(1)因为这是循环的工作方式:在每次循环迭代后,变量将递增,如果条件 ( j < cusName.GetLength(1)) 为真,则将执行循环体。所以 for 循环总是以循环变量的另一个增量结束。
这意味着如果您使用循环变量作为索引,那么该索引将在循环后超出数组的范围。所以如果你想重用变量,你应该记住这一点。
通常,如果您不使用循环变量而是再次单独计算最后一个索引,则会更容易和更清晰:
cusName[x, cusName.GetLength(1) - 1])
- 3 回答
- 0 关注
- 191 浏览
添加回答
举报