Привет, ребята, мне нужно использовать Int-точки из метода ValidateAns в Main метода. Я искал в сети, и люди сказали, что я должен делать ValidateAns (очки), однако это не работает для меня, я не уверен, что я делаю это неправильно или я должен использовать другой способ сделать это
static void Main(string[] args)
{
const int QuestionNumbers = 10;
char[] Answear = new char[QuestionNumbers];
Question[] MCQ = new Question[QuestionNumbers];
MCQ[0] = new Question(Slaughterhouse);
MCQ[1] = new Question(Frankenstein);
MCQ[2] = new Question(Things);
MCQ[3] = new Question(Jane);
MCQ[4] = new Question(Kill);
MCQ[5] = new Question(Beloved);
MCQ[6] = new Question(Gatsby);
MCQ[7] = new Question(Catcher);
MCQ[8] = new Question(Pride);
MCQ[9] = new Question(Nineteen);
for (int i = 0; i < QuestionNumbers; i++)
{
Console.WriteLine("Question {0}", i + 1);
Answear[i] = MCQ[i]();
ValidateAns(i + 1, Answear[i]);
Console.WriteLine();
Console.ReadKey();
}
}
static void ValidateAns(int Nbr, char Ans)
{
int points= 0;
switch (Nbr)
{
case 1:
if (Ans == 'b' || Ans == 'B')
{
Console.WriteLine("Good Answear");
points++;
break;
}
else
{
Console.WriteLine("Wrong Answer - The right answer was (B)");
break;
}
}
}
Я реорганизовал членов, которых вы нам дали.
Подумайте об именовании, если вы собираетесь проверить что-то, что вам нужно, чтобы вернуть логическое или bool, чтобы указать, был ли предоставлен ответ, действителен или нет. см. IsValidAnswer()
. При написании членов, которые возвращают bool, подумайте об использовании связующего глагола. Is, Has, Will.
когда вы сравниваете char
типа, вы можете использовать char.ToUpperInvariant(char val)
, поэтому вам не нужно сравнивать свой ответ с слишком разными случаями одного и того же символа.
Я надеюсь, что это поможет, проверьте комментарии в коде. Там есть самородок, который вам понравится как разработчик. :) хорошего дня
private static void Main(string[] args)
{
const int QuestionNumbers = 10;
var Answer = new char[QuestionNumbers];
Question[] MCQ = new Question[QuestionNumbers];
MCQ[0] = new Question(Slaughterhouse);
MCQ[1] = new Question(Frankenstein);
MCQ[2] = new Question(Things);
MCQ[3] = new Question(Jane);
MCQ[4] = new Question(Kill);
MCQ[5] = new Question(Beloved);
MCQ[6] = new Question(Gatsby);
MCQ[7] = new Question(Catcher);
MCQ[8] = new Question(Pride);
MCQ[9] = new Question(Nineteen);
for (int i = 0; i < QuestionNumbers; i++)
{
Console.WriteLine("Question {0}", i + 1);
Answer[i] = MCQ[i]();
// return bool since you want to validate an answer.
var result = IsValidAnswer(i + 1, Answer[i]);
// this is an if/else conditional statment, its called a ternary expression
Console.WriteLine(result ? "Answer is valid" : "Answer is not valid");
Console.WriteLine();
Console.ReadKey();
}
}
private static bool IsValidAnswer(int Nbr, char Ans)
{
// if you really wanted to use a method.
var correctAnswer = default(char);
switch (Nbr)
{
case 1:
correctAnswer = 'b';
break;
case 2:
//..
break;
}
return char.ToUpperInvariant(Ans) == char.ToUpperInvariant(correctAnswer);
}
определите свою функцию как
static int ValidateAns(int Nbr, char Ans)
и вернуть значение точек с return points;
затем назовите его чем-то вроде
int p=ValidateAns(i + 1, Answear[i]);
bool
изValidateAns
чтобы указать, был ли ответ правильным. В логике цикла вы добавите 1 к счетчику очков, если значениеbool
было истинным.