开发一个小测验应用程序,到目前为止我有一个包含两个示例问题的文本文件,看看我是否可以在添加更多之前使其正常工作。有5个难度增加的问题级别,每个级别包含10个问题
我使用流读取器从文本文件中读取我的1级问题,它会正确读取第一个问题,程序会读取用户输入并将其与答案进行比较。如果正确,用户将移动到下一级别,但如果不正确,我希望程序询问文件中的第二个问题 - 但它继续读取第一个问题。
我有
static int pos = 0;
作为读者的位置计数器,但每当我尝试在读者中解决我的结构时包含位置
_question1[pos].q_No = Convert.ToInt32(sreader.ReadLine());
我收到错误消息:
Cannot apply indexing with [] to an expression of type
'Quiz_Application.Program.question1'
变量n:
static question1[] _questions1 = new question1[10];
static question2[] _questions2 = new question2[10];
static question3[] _questions3 = new question3[10];
static question4[] _questions4 = new question4[10];
static question5[] _questions5 = new question5[10];
static int score = 0;
static int asked = 0;
static int pos = 0;
static int user_input = 0;
static int user_level = 1;
struct question1
{
public int q_No;
public string Question;
public string Choices;
public int Answer;
}
我的读者:
static void QuestionReader_Level1()
{
Console.Clear();
question1 _question1 = new question1();
string filename = @"C:\Users\Craigo\Desktop\Quiz_Application\Files\question1.txt";
while (user_level == 1)
{
using (StreamReader sreader = new StreamReader(filename, true))
{
pos += 1;
asked += 1;
_question1.q_No = Convert.ToInt32(sreader.ReadLine());
Console.WriteLine(_question1.q_No);
_question1.Question = sreader.ReadLine();
Console.WriteLine(_question1.Question);
_question1.Choices = sreader.ReadLine();
Console.WriteLine(_question1.Choices);
_question1.Answer = Convert.ToInt32(sreader.ReadLine());
user_input = Convert.ToInt32(Console.ReadLine());
if (user_input == _question1.Answer)
{
score += 1;
user_level += 1;
Console.WriteLine("\nCongratulations, you have scored 1 point and advanced to level 2");
Console.WriteLine("Score = {0}, Questions Asked = {1}", score, asked);
}
}
}
}
我该怎么办?
答案 0 :(得分:0)
变量“_question1”不是数组: question1 _question1 = new question1();
所以,当你有“_question1 [pos]”时,它将不起作用。
你的数组是“_questions1”(你错过了's'): question1 [] _questions1 = new question1 [10];
_questions1 [pos]应该可以工作
答案 1 :(得分:-1)
while循环仅在变量user_level为1时循环。另外,您已添加,如果用户的输入等于答案,user_level将增加1,等于2,因此,循环不会再跑。但是,程序仍然循环的事实意味着不满足条件,这告诉我们用户输入不等于答案。因此,错误可能是由文件引起的。你介意显示文件的内容吗?