C#矩阵元素检查与控制台符号展示时索引越界问题求助
解决System.IndexOutOfRangeException异常:矩阵遍历索引错误
你的代码触发索引越界异常的核心原因是:C#的数组(包括多维数组)索引从0开始,但你的循环变量从1开始,且终止条件写的是<= boardLength。当循环执行到最后一轮时,i和j的值等于矩阵的边长,而矩阵的最大有效索引是boardLength - 1,这就导致了非法访问。
修复后的代码
// Displays the gameboard requested public static void DisplayBoard(int[,] gameboard) { int boardLength = gameboard.GetLength(0); // 获取矩阵边长 // 遍历矩阵并输出对应符号 for (int i = 0; i < boardLength; i++) { for (int j = 0; j < boardLength; j++) { // 根据元素值选择输出符号 if (gameboard[i, j] == 1) // 玩家1的X { Console.Write("X"); } else if (gameboard[i, j] == 2) // 玩家2的O { Console.Write("O"); } else // 空位置默认输出- { Console.Write("-"); } } Console.WriteLine(); // 每行结束换行 } }
额外优化建议(可选)
可以用C#的switch表达式简化符号判断逻辑,让代码更简洁:
Console.Write(gameboard[i, j] switch { 1 => "X", 2 => "O", _ => "-" });
内容的提问来源于stack exchange,提问作者Ekalb Mchief
相关产品推荐
相关产品推荐

