C#开发Hangman游戏:如何从方法正确返回二维数组
修正后的Hangman游戏ProcessWord方法实现
原代码核心问题
- 方法返回类型不匹配:声明返回
char[]但实际要返回二维数组char[,] - 不必要且错误的out参数:
out char UncoveredArray定义为单个字符,和实际需要的二维数组类型不符,且无需用out传递结果 - Main方法中错误的数组初始化与调用逻辑
修正后的完整代码
Main方法部分
static void Main(string[] args) { NewGame Hangman = new NewGame(); string Answer = Hangman.GetWord(); // 直接接收ProcessWord返回的二维数组,无需提前初始化 char[,] UncoveredArray = Hangman.ProcessWord(Answer); }
ProcessWord方法部分
// 修正返回类型为二维char数组,移除错误的out参数 public char[,] ProcessWord(string Answer) { char[] chars = Answer.ToCharArray(); // 初始化二维数组:每行存原字符和显示字符 char[,] UncoveredArray = new char[chars.Length, 2]; for (int i = 0; i < Answer.Length; i++) { if (chars[i] == ' ') { Console.Write("/"); UncoveredArray[i, 0] = chars[i]; UncoveredArray[i, 1] = '/'; } else if (char.IsPunctuation(chars[i])) { Console.Write(chars[i]); UncoveredArray[i, 0] = chars[i]; UncoveredArray[i, 1] = chars[i]; } else { Console.Write("_"); UncoveredArray[i, 0] = chars[i]; UncoveredArray[i, 1] = '_'; } } // 返回正确类型的二维数组 return UncoveredArray; }
修正说明
- 调整
ProcessWord的返回类型为char[,],匹配实际要返回的二维数组类型 - 移除了冗余且类型错误的
out参数,直接通过方法返回结果简化逻辑 - Main方法中不再提前初始化数组,直接接收方法返回的二维数组即可使用
- 保持了原有的显示规则:空格转
/、标点保留原样、字母转_,同时正确填充二维数组的原字符和显示字符列
内容的提问来源于stack exchange,提问作者Lisa
相关产品推荐
相关产品推荐

