对于学校作业,我必须创建驾驶理论考试,并且必须使用词典功能。
Dictionary<int, QuestionsClass> dictionary = new Dictionary<int, QuestionsClass>();
dictionary.Add(0, new Classes.QuestionsClass("Question", "Answer A", "Answer B", "Answer C", "Answer D", "Answer B"));
question = dictionary;
这是字典代码的示例,其中最后一个列表项是正确的答案。
private void Option01Selected(object sender, EventArgs e)
{
if (radOption1.Checked)
{
SelectedAnswer = radOption1.Text;
}
}
我有四个,所以程序知道选择了哪个选项作为答案。用户选择后,会点击提交按钮。
CorrectAnswer(); //check the answer is correct
CountQuestions++; //counts how many questions have been asked
这是提交按钮
中代码的一部分if (!string.Equals(SelectedAnswer, question[RandomQuestion].Answer, StringComparison.OrdinalIgnoreCase))
{
Correct = Correct + 1;
}
lblScore.Text = Convert.ToString(Correct);
这是保持正确答案得分的功能。
现在出现问题。它可能非常简单易用,但这是我的第一个C#应用程序,我无法弄明白。
当用户选择答案时,程序始终将其视为正确答案。
任何帮助都将是一个巨大的帮助。
谢谢 皮尔
答案 0 :(得分:0)
要评估答案是否正确,请执行以下比较:
string.Equals(
SelectedAnswer,
question[RandomQuestion].Answer,
StringComparison.OrdinalIgnoreCase
)
输入的答案与问题的答案相符,这是真的。但是,出于某种原因,您否定了这种比较并使用该标准来确定答案是否正确:
if (!string.Equals(SelectedAnswer, question[RandomQuestion].Answer, StringComparison.OrdinalIgnoreCase))
{
Correct = Correct + 1;
}
这会使用错误答案交换正确答案,而不是您想要的答案。
因此,如果我的分析是正确的,您需要在调用!
之前摆脱逻辑非运算符(string.Equals
)。
答案 1 :(得分:0)
如果陈述应该是:
if (string.Equals(SelectedAnswer, question[RandomQuestion].Answer, StringComparison.OrdinalIgnoreCase))
{
Correct = Correct + 1;
}
您目前正在检查两个答案是否相等,如果是,则增加1。