#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:
-
Первый оператор switch совершенно бесполезен, поскольку существует только значение по умолчанию.
-
Я не знаю, что означает
// 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
}