尝试使用无效输入循环开关 (C#)
Trying to loop a switch with an invalid input (C#)
无论如何,我不知道我应该怎么做...在我的应用程序中,如果存在无效输入,我需要让开关自行重复。一旦我输入不同的结果,应用程序所做的就是退出。这是我的代码:
string str = Console.ReadLine();
char option = char.Parse(str);
//Need to repeat this switch:
switch (option)
{
case 'N':
Console.WriteLine("Creating New App...");
break;
case 'L':
Console.WriteLine("Loading App...");
break;
case 'O':
Console.WriteLine("Loading Options...");
break;
case 'Q':
Console.WriteLine("Exiting Application...");
System.Environment.Exit(1);
break;
default:
Console.WriteLine("Invalid input.");
break;
}
Console.ReadLine();
您可以使用 while
语句。
bool shouldRun = true;
while(shouldRun)
{
switch (option)
{
case 'N':
Console.WriteLine("Creating New App...");
shouldRun = false;
break;
case 'L':
Console.WriteLine("Loading App...");
shouldRun = false;
break;
case 'O':
Console.WriteLine("Loading Options...");
shouldRun = false;
break;
case 'Q':
Console.WriteLine("Exiting Application...");
System.Environment.Exit(1);
break;
default:
Console.WriteLine("Invalid input.");
shouldRun = true;
break;
}
}
将 switch
放入循环中
bool invalidInput = true;
while (invalidInput)
{
string str = Console.ReadLine();
char option = char.Parse(str);
switch (option)
{
case 'N':
Console.WriteLine("Creating New App...");
invalidInput = false;
break;
case 'L':
Console.WriteLine("Loading App...");
invalidInput = false;
break;
case 'O':
Console.WriteLine("Loading Options...");
invalidInput = false;
break;
case 'Q':
Console.WriteLine("Exiting Application...");
System.Environment.Exit(1);
break;
default:
Console.WriteLine("Invalid input.");
break;
}
}
要重复开关,您需要使用一个 loop.I 认为您正在寻找如下内容:
bool ExitFlag = true;
while (ExitFlag)
{
ExitFlag = false;
switch (option)
{
case 'N':
Console.WriteLine("Creating New App...");
break;
case 'L':
Console.WriteLine("Loading App...");
break;
case 'O':
Console.WriteLine("Loading Options...");
break;
case 'Q':
Console.WriteLine("Exiting Application...");
System.Environment.Exit(1);
break;
default:
Console.WriteLine("Invalid input.");
ExitFlag = true;
break;
}
}
注意它是如何工作的:
设ExitFlag
为控制while循环的布尔值(当ExitFlag
为false时停止迭代并退出while)。并用 true
初始化。在每次控件进入 while 标志时,都会将标志设置为 false
,这样我们就可以避免在多种情况下将其设置为 false。仅当执行 default
情况(即无效输出)时,该标志才会设置为 true
,因此循环仅在这种情况下重复。
您可以在 C# 中使用 Goto: label 选项。
参考:https://msdn.microsoft.com/en-us/library/13940fs2.aspx
ReadAgain:
string str = Console.ReadLine();
char option = char.Parse(str);
//The switch itself:
switch (option)
{
case 'N':
Console.WriteLine("Creating New App...");
break;
case 'L':
Console.WriteLine("Loading App...");
break;
case 'O':
Console.WriteLine("Loading Options...");
break;
case 'Q':
Console.WriteLine("Exiting Application...");
System.Environment.Exit(1);
break;
default:
Console.WriteLine("Invalid input.");
goto ReadAgain;
break;
}
Console.ReadLine();
无论如何,我不知道我应该怎么做...在我的应用程序中,如果存在无效输入,我需要让开关自行重复。一旦我输入不同的结果,应用程序所做的就是退出。这是我的代码:
string str = Console.ReadLine();
char option = char.Parse(str);
//Need to repeat this switch:
switch (option)
{
case 'N':
Console.WriteLine("Creating New App...");
break;
case 'L':
Console.WriteLine("Loading App...");
break;
case 'O':
Console.WriteLine("Loading Options...");
break;
case 'Q':
Console.WriteLine("Exiting Application...");
System.Environment.Exit(1);
break;
default:
Console.WriteLine("Invalid input.");
break;
}
Console.ReadLine();
您可以使用 while
语句。
bool shouldRun = true;
while(shouldRun)
{
switch (option)
{
case 'N':
Console.WriteLine("Creating New App...");
shouldRun = false;
break;
case 'L':
Console.WriteLine("Loading App...");
shouldRun = false;
break;
case 'O':
Console.WriteLine("Loading Options...");
shouldRun = false;
break;
case 'Q':
Console.WriteLine("Exiting Application...");
System.Environment.Exit(1);
break;
default:
Console.WriteLine("Invalid input.");
shouldRun = true;
break;
}
}
将 switch
放入循环中
bool invalidInput = true;
while (invalidInput)
{
string str = Console.ReadLine();
char option = char.Parse(str);
switch (option)
{
case 'N':
Console.WriteLine("Creating New App...");
invalidInput = false;
break;
case 'L':
Console.WriteLine("Loading App...");
invalidInput = false;
break;
case 'O':
Console.WriteLine("Loading Options...");
invalidInput = false;
break;
case 'Q':
Console.WriteLine("Exiting Application...");
System.Environment.Exit(1);
break;
default:
Console.WriteLine("Invalid input.");
break;
}
}
要重复开关,您需要使用一个 loop.I 认为您正在寻找如下内容:
bool ExitFlag = true;
while (ExitFlag)
{
ExitFlag = false;
switch (option)
{
case 'N':
Console.WriteLine("Creating New App...");
break;
case 'L':
Console.WriteLine("Loading App...");
break;
case 'O':
Console.WriteLine("Loading Options...");
break;
case 'Q':
Console.WriteLine("Exiting Application...");
System.Environment.Exit(1);
break;
default:
Console.WriteLine("Invalid input.");
ExitFlag = true;
break;
}
}
注意它是如何工作的:
设ExitFlag
为控制while循环的布尔值(当ExitFlag
为false时停止迭代并退出while)。并用 true
初始化。在每次控件进入 while 标志时,都会将标志设置为 false
,这样我们就可以避免在多种情况下将其设置为 false。仅当执行 default
情况(即无效输出)时,该标志才会设置为 true
,因此循环仅在这种情况下重复。
您可以在 C# 中使用 Goto: label 选项。
参考:https://msdn.microsoft.com/en-us/library/13940fs2.aspx
ReadAgain:
string str = Console.ReadLine();
char option = char.Parse(str);
//The switch itself:
switch (option)
{
case 'N':
Console.WriteLine("Creating New App...");
break;
case 'L':
Console.WriteLine("Loading App...");
break;
case 'O':
Console.WriteLine("Loading Options...");
break;
case 'Q':
Console.WriteLine("Exiting Application...");
System.Environment.Exit(1);
break;
default:
Console.WriteLine("Invalid input.");
goto ReadAgain;
break;
}
Console.ReadLine();