Member 13560407 Ответов: 1

Получите мой код для сравнения входных данных со строкой arrray


Я работаю над этим уже некоторое время. Это тест с множественным выбором, который я делаю для класса. В принципе, у меня нет опыта программирования. Я читал свой учебник и просматривал Google, чтобы собрать этого монстра воедино. Я пробую код за кодом и путаюсь с синтаксисом, чтобы заставить вещи работать. Теперь у меня есть он, где мои вопросы связаны с выбором. Я могу ввести ответ (a,b,c или d), но вместо того, чтобы правильно сравнить его с правильной строкой ответа, он просто говорит, что мой ответ неправильный. Пожалуйста помочь.

using System;
using System.Linq;

namespace Checkpoint_3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Quiz");
            //Variables
            bool answerCorrect = false; // will be used to evaluate if answer is correct or not
            string[] questions = { "2+2=", "4x5=", "8+2=", "2x100=", "3+3=", "2+100", "2-2=", "1+2=", "3x3=15", "45-5+8=48" }; // will be questions used on test. 8 Multiple choice and 2 true/false
            string[] answers = { "a.4 b.2 c.6 d. 10", "a.40 b.20 c.16 d. 11", "a.6 b.12 c.16 d. 10", "a.104 b.200 c.65 d. 102", "a.4 b.2 c.6 d. 10", "a.14 b.200 c.60 d. 102", "a.4 b.2 c.0 d. 10", "a.3 b.2 c.6 d. 102", "true false", " true false" }; // these will stand as answer bank for all questions
            string [] correctanswer = { "a", "b", "d", "b", "c", "d", "c", "a", "false", "true" }; //these are the correct answers to all the question. any other selections will be countd as incorrect
            int scoreCard = 0; // everyone starts with 0 correct out of ten. once quiz is completed score will be listed as 1-10. 
            int[] questionsIncorrect = { };
            string [] line = { "" };  //initialize it to a blank line
            

            //Welcome To Program
            Console.WriteLine("Ryan Hinds, ENGR101- Quiz");
            Console.WriteLine();


            
            for (int i = 0; i < 10; i++)
            {
                
                Console.WriteLine(questions[i]);
                Console.WriteLine();
                Console.WriteLine(answers[i]);
                Console.WriteLine("Answer");
                Console.ReadKey();
                object Letter = Convert.ToString(line[i]);
                if (line[i] == correctanswer[i]) 
                {
                    Console.WriteLine(" You Are Correct");
                }
                else
                    Console.WriteLine("Wrong");


                    Console.WriteLine();
                Console.WriteLine();
                

            }


            Console.ReadKey();

        }
    }
}


Что я уже пробовал:

Другой синтаксис для операторов readkey и if-else

1 Ответов

Рейтинг:
2

Patrice T

Console.ReadKey();

Как сказать: этот код считывает ключ и снова трет, ничего с ним не делая.
if (line[i] == correctanswer[i])

Затем вы сравниваете правильный ответ со значением, которое приходит из ниоткуда.
Попробуйте что-нибудь вроде:
line[i] =Console.ReadKey();

Простое использование отладчика показало бы вам это line[i] остается пустым.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]
Отладка кода C# в Visual Studio - YouTube[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


CPallini

5.

Patrice T

Спасибо

Member 13560407

Да, я попробовал line[i] =Console.ReadKey(); before. Он выдает CS0029 в поле ошибки, говоря, что он не может преобразовать consolekey в строку. Что касается отладки, то это отличный совет. Спасибо.

Patrice T

Я не использую консоль C#, возможно, Readkey-это не та функция, которую нужно использовать.
вам нужно прочитать документацию и посмотреть, какие другие функции вы можете использовать.

Richard Deeming

Console.ReadKey это не сработает, так как у вас есть ответы, которые требуют более одного символа.

Попробуй Console.ReadLine() вместо этого он возвращает все, что пользователь вводит до нажатия кнопки Входить или Возвращать.