如何将用户输入存入数组并展示?数学游戏问答存储实现
解决数学游戏中存储题目与用户答案并展示的问题
嘿,我来帮你搞定这个需求!要把每道题和对应的用户答案存起来最后展示,关键是要把题目文本和用户答案关联在一起存储,避免分开存两个数组导致对应关系出错。下面给你两种实用的实现方案,按需选择:
方案1:自定义类存储(推荐,扩展性强)
如果以后可能需要添加更多属性(比如正确答案、答题时间),自定义一个类来封装题目和答案是最稳妥的方式:
首先定义一个简单的类:
// 封装题目与用户答案的类 public class QuestionAnswerPair { public string Question { get; set; } public string UserAnswer { get; set; } }
然后在你的游戏逻辑里,初始化一个动态列表(比固定长度的数组灵活,因为你不知道用户会答多少题),并在每次用户提交答案后添加记录:
// 游戏开始前初始化答题记录列表 List<QuestionAnswerPair> questionHistory = new List<QuestionAnswerPair>(); // 你的原有代码逻辑 string sss = Convert.ToString(answer); string question = string.Format("{0} {1} {2}", num01, op, num02); Console.WriteLine("--------------------------------------------------------"); Console.WriteLine("What is = " + question + " Or type QUIT to ignore "); string useranswer = Convert.ToString(Console.ReadLine()); // 判断用户不是输入QUIT时,添加到记录列表 if (!string.Equals(useranswer, "QUIT", StringComparison.OrdinalIgnoreCase)) { questionHistory.Add(new QuestionAnswerPair { Question = question, UserAnswer = useranswer }); }
当用户结束游戏(比如输入QUIT),就可以遍历列表展示所有答题记录了:
// 展示所有答题记录 Console.WriteLine("\n--- 你的答题记录 ---"); foreach (var pair in questionHistory) { Console.WriteLine($"题目: {pair.Question} | 你的答案: {pair.UserAnswer}"); }
方案2:用ValueTuple快速实现(无需额外定义类)
如果只是简单存储题目和答案,不想写额外的类,可以用C#的ValueTuple,语法更简洁:
// 初始化ValueTuple类型的列表 List<(string Question, string UserAnswer)> questionHistory = new List<(string, string)>(); // 原有代码逻辑不变,添加记录时直接用元组 string sss = Convert.ToString(answer); string question = string.Format("{0} {1} {2}", num01, op, num02); Console.WriteLine("--------------------------------------------------------"); Console.WriteLine("What is = " + question + " Or type QUIT to ignore "); string useranswer = Convert.ToString(Console.ReadLine()); if (!string.Equals(useranswer, "QUIT", StringComparison.OrdinalIgnoreCase)) { // 直接添加元组到列表 questionHistory.Add((question, useranswer)); } // 展示记录时的写法也更简洁 Console.WriteLine("\n--- 你的答题记录 ---"); foreach (var (q, a) in questionHistory) { Console.WriteLine($"题目: {q} | 你的答案: {a}"); }
为什么用List而不是数组?
因为用户答题的数量是不确定的(直到输入QUIT),数组需要预先指定固定长度,而List<T>可以动态添加元素,不需要提前预估题数,使用起来更灵活。如果一定要用数组,你需要手动处理扩容逻辑,远不如List方便。
内容的提问来源于stack exchange,提问作者Hade Zedan
相关产品推荐
相关产品推荐

