Перейти к оператору переключения строки / цикла?

#c# #console-application

#c# #консольное приложение

Вопрос:

Я даже не уверен, как назвать то, что я хочу сделать… В принципе, у меня есть экран выбора и я использую оператор switch вместо if / else, в части по умолчанию инструкции switch я хочу запросить подтверждение выхода… В основном

 switch(input)
{
    default:
        Console.WriteLine("Are you sure?")
        var confirm = Console.ReadLine();

        switch (confirm)
        {
            case "y":
                //quit
            case "n":
                break;
            default:
                // GO BACK TO Console.WriteLine();
                break;
        }

        break;
}
  

В принципе, мне нужно вернуться к консоли.WriteLine(); часть, но я не уверен, какой наиболее эффективный метод для этого?

Комментарии:

1. что вам нужно, так это цикл while… initialize with 'no'; while (user says no) { ask for confirmation; if user says yes break loop; }

Ответ №1:

  1. Первый оператор switch совершенно бесполезен, поскольку существует только значение по умолчанию.

  2. Я не знаю, что означает // GO BACK TO Console.WriteLine(); (ГДЕ ???!) но я думаю, вы хотите сделать что-то вроде этого:

      boolean toExit = false;
     while (!toExit) {
     // And for what is the input??
     string input = Console.ReadLine();
    
     Console.WriteLine("Are you sure?")
     var confirm = Console.ReadLine();
    
     switch (confirm)
     {
         case "y":
             toExit = true;
             break;
         case "n":
             break;
         default:
             // GO BACK TO Console.WriteLine();
            // SO, WHERE?
             break;
     }
      

}

Комментарии:

1. 1. Извините, я не выписал вам свой оператор переключения на 15 регистров, его бесполезная информация и пустая трата времени для того, чтобы кто-то даже прочитал ее. 2. Это буквально прямо здесь: строка 7 во всем сообщении, строка 4 в коде.

Ответ №2:

Если мне нужна некоторая интерактивность в консольном приложении, я обычно создаю кучу классов управления (похожих на WinForms, с множеством различных функций, таких как color / align / etc). Чтобы вызвать диалоговое окно консоли для простого ответа «Да» / «Нет», вы могли бы использовать просто простой метод:

 public static bool PromptYesNoDialog(string question)
{
    Console.WriteLine(question);
    while(true)
    {
        var answer = Console.ReadLine().Trim().ToLower();
        if(answer.Equals("y") || answer.Equals("yes"))
            return true;
        if(answer.Equals("n") || answer.Equals("no"))
            return false;
        Console.WriteLine("Answer should be 'y' or 'n'.");
    }
}
  

Затем используйте его:

    //doing work, and encountered problem which only user can solve
   if(PromptYesNoDialog("Do you wanna play?"))
   {
      //play
   }
   else
   {
      //not play
   }