TheBigBearNow Ответов: 1

В C# консольное приложение застрял на конце, а хотелось бы вводить ввода Н перемещения, если правильно


Привет всем, у меня есть цикл в консольном приложении. Я использую цикл while и захватываю ввод пользователей. Я проверяю входные данные, и если они недействительны, я хотел бы перейти к началу, чтобы они могли попробовать еще раз. В настоящее время как только они ошибаются я застрял в конце это не имеет значения если они снова вводят правильный ввод я застрял в конце

for(int i = 0; i < answers.Length; i++)
            {
                Console.WriteLine("Question " + (i + 1) + ": ");
                string input = Console.ReadLine();
                
                if(char.TryParse(input, out char inserted))
                {
                    answers[i] = inserted;

                    // Validate the answer.
                    while (!Valid(answers[i]))
                    {
                        Console.WriteLine("ERROR: Valid answers are A, B, C, or D.");
                        Console.Write("Question " + (i + 1) + ": ");
                        input = Console.ReadLine();
                        if(char.TryParse(input, out char userChar))
                        {
                            answers[i] = inserted;
                        }
                    }
                }
            }


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

Moving stuff around and trying to exit the loop but stuck at the end

1 Ответов

Рейтинг:
10

Ehsan Sajjad

Ваше следующее условие, кажется, является виновником. Вы используете inserted переменная в то время как вы принимаете входные данные и вводите их userChar.

Либо использовать inserted в обоих местах или измените свой while состояние. Попробовать следующее:

if(char.TryParse(input, out char userChar))
{
     answers[i] = userChar; // note this 
}


или вам нужно использовать inserted В вашем TryParse вызов метода:

if(char.TryParse(input, out char inserted))
{
     answers[i] = inserted;
}