You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将用户输入存入数组并展示?数学游戏问答存储实现

解决数学游戏中存储题目与用户答案并展示的问题

嘿,我来帮你搞定这个需求!要把每道题和对应的用户答案存起来最后展示,关键是要把题目文本和用户答案关联在一起存储,避免分开存两个数组导致对应关系出错。下面给你两种实用的实现方案,按需选择:

方案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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:08:21