C#复刻Wordle:如何将用户输入单词的字符存入二维char数组?
问题解决:正确将Wordle猜测单词存入二维char数组
你的代码核心问题是内层循环每次调用Console.ReadLine(),这会导致要么被迫逐个输入字符,要么输入完整单词时仅取第一个字符存入数组,后续循环还会重复等待输入,完全不符合Wordle输入完整5字母单词的逻辑。
修正思路
- 外层循环控制猜测次数(共6次),每次循环读取用户输入的完整单词
- 增加输入验证,确保输入恰好是5个字符(避免数组越界,符合Wordle规则)
- 将单词的每个字符依次存入二维数组的当前行对应列
修正后的代码
// 存储6次猜测的单词,每次5个字符 char[,] userWords = new char[6, 5]; for (int i = 0; i < userWords.GetLength(0); i++) { Console.Write($"\n第{i+1}/6次猜测:"); string inputWord = string.Empty; // 验证输入格式:必须是5个字符的单词 while (true) { inputWord = Console.ReadLine().Trim().ToUpper(); // 统一转大写,方便后续答案对比 if (inputWord.Length == 5) break; Console.Write("请输入恰好5个字符的单词:"); } // 将单词的每个字符存入数组当前行 for (int j = 0; j < userWords.GetLength(1); j++) { userWords[i, j] = inputWord[j]; // 测试输出:打印当前行的字符 Console.Write(userWords[i, j] + " "); } Console.WriteLine(); }
关键改动说明
- 将
Console.ReadLine()移到外层循环,每次读取完整的5字母单词,而非单个字符 - 增加输入验证逻辑,避免用户输入长度不符的内容导致数组越界
- 统一将输入转成大写,匹配Wordle不区分大小写的规则,也方便后续与目标单词对比
- 通过
inputWord[j]直接提取单词的第j个字符,存入数组的userWords[i,j]位置
内容的提问来源于stack exchange,提问作者12345678i9
相关产品推荐
相关产品推荐

