Пока петли.Как зациклить строки - PullRequest
0 голосов
/ 17 октября 2018

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Media;
using System.Threading.Tasks;

namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("What Countries Capital City is Oslo, Choose From the Following: ");
            Thread.Sleep(5000);
            Console.WriteLine("1.Norway, 2.Sweden, 3.Germany");
            String Answer = Console.ReadLine();

            while (Answer != null)
            {
                if (Answer == "Norway")
                {
                    Console.WriteLine("That is Correct!");
                    Console.Read();
                }
                else if (Answer != "Norway")
                {
                    Console.WriteLine("That is Incorrect!");
                    Console.Read();
                }
            }
        }
    }
}

Итак, я использовал цикл while, но цикл while не зацикливается, если ответ ложный, он зацикливается только один раз, но мне нужен бесконечный циклпока ответ не будет правильным.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Самое простое решение - изменить предикат while:

while (Answer != "Norway")

Вам также необходимо установить переменную ответа внутри цикла:

String Answer = String.Empty;

while (Answer != Norway)
{
    Answer = Console.ReadLine();
    if (Answer == "Norway")
    {
        Console.WriteLine("That is Correct!");
    }
    else 
    {
        Console.WriteLine("That is Incorrect!");
    }
}

Я удалилОператоры Console.Read (), поскольку они не нужны.

Возможно, вы захотите снова напечатать вопрос каждый раз, когда пользователь вводит неправильный ввод.

Вы также можете сделать ответ без учета регистра, изменив предикат следующим образом:

while (!Answer.Equals("Norway", StringComparison.CurrentCultureIgnoreCase))
0 голосов
/ 17 октября 2018

Я запустил ваш код с помощью отладчика.

вам нужно выяснить, что отличается между "Console.ReadLine ()" и "Console.Read ()".-> На самом деле я учусь на вашей ошибке.

Пожалуйста, не забудьте, что в цикле while значение "String Answer" должно быть переназначено с помощью ввода пользователя.

...