У меня есть тупой маленький проект кодирования. Я пытаюсь использовать его для изучения C #, и моя проблема в том, что я сталкиваюсь с этим, но я не знаю, как взять default и вернуть его к предыдущему вопросу, где ему придется задать вопрос еще раз, если пользователь не ввел то, что является выбором. Я пробовал циклы, которые я продолжаю ломать, я пробовал if / else, и я кодировал только короткое время, поэтому по большей части это довольно чуждо. Любая помощь будет оценена.

Console.WriteLine("question blah blah blah");

string choice1 = "blah1";
string choice2 = "blah2";
string choice3 = "blah3";

string userChoice = Console.ReadLine();

switch (userChoice)
{
  case "1":
    //Dostuff
  case "2":
    //Dostuff
  case "3":
    //Dostuff
  default:
    Console.WriteLine("you didn't enter something i could recognize")
    break 
}
2
Scotty Tollison 20 Апр 2016 в 06:56

2 ответа

Лучший ответ

Один из вариантов - использовать цикл do-while и переменную типа bool для управления выполнением.

bool loop;

do
{
    Console.WriteLine("question blah blah blah");

    string choice1 = "blah1";
    string choice2 = "blah2";
    string choice3 = "blah3";

    string userChoice = Console.ReadLine();

    // Set to false by default
    loop = false;

    switch (userChoice)
    {
        case "1":
            //Dostuff
            break;
        case "2":
            //Dostuff
            break;
        case "3":
            //Dostuff
            break;
        default:
            Console.WriteLine("you didn't enter something i could recognize");
            // Set to true to iterate again.
            loop = true;
            break;
    }
} while(loop);
1
20 Апр 2016 в 04:18

Добро пожаловать в сообщество SO!

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

0
Vivek Jain 20 Апр 2016 в 04:02