C# 我在箱子里有一个开关。如何退出该开关并重复包含该开关的案例?
我有嵌套的switch语句,用于在应用程序内导航菜单。 例如,如果输入开关的四边形部分,将显示菜单,并提示用户输入一个数字,该数字对应于有关四边形类型的某些计算。但是,如果我错误地选择了四边形而不是三角形,我想返回上一个菜单,在那里我可以选择所需的形状(三角形或四边形) 补充澄清:C# 我在箱子里有一个开关。如何退出该开关并重复包含该开关的案例?,c#,C#,我有嵌套的switch语句,用于在应用程序内导航菜单。 例如,如果输入开关的四边形部分,将显示菜单,并提示用户输入一个数字,该数字对应于有关四边形类型的某些计算。但是,如果我错误地选择了四边形而不是三角形,我想返回上一个菜单,在那里我可以选择所需的形状(三角形或四边形) 补充澄清: // main menu Console.WriteLine("1) Make new shape"); Console.WriteLine("2) Read all shapes&qu
// main menu
Console.WriteLine("1) Make new shape");
Console.WriteLine("2) Read all shapes");
Console.WriteLine("3) Delete shape");
Console.WriteLine("0) Exit");
// shape menu (option 1 from main menu)
Console.WriteLine("1) Triangle");
Console.WriteLine("2) Quadrangle");
Console.WriteLine("0) Back to main menu");
// quadrangle menu (option 2 from shape menu)
Console.WriteLine("1) Square");
Console.WriteLine("2) Rectangle");
Console.WriteLine("0) Back to shape menu");
所以,当我到达四边形菜单并输入0时,我想回到形状菜单。
换句话说,当我到达shape switch的案例2时,我希望能够返回到choice switch的案例1。由于嵌套的开关嵌入到带有
的do循环中,而(choice!=0)
最后,如果将choice
设置为不相等的值0
,则应该自动发生这种情况。您只需要一种方法来抑制主菜单和用户输入。为此引入一个标志(布尔变量)
在嵌套开关中(或实际上在任何开关中),设置choice=0当您想要结束循环并设置choice=a_值\u不等于\u 0代码>如果要再次将控件传递给选择开关
要回答您的具体情况:
bool getMainUserInput = true; // <===============
int choice = 0;
do
{
if (getMainUserInput) { // <===============
// show main menu & get user input
}
getMainUserInput = true; // Set as default for next loop <===============
switch (choice)
{
case 1:
// show shape menu & get user input for shape selection
switch (shape)
{
case 0:
// exit this switch and begin new iteration of do-while
case 1:
// show triangle menu & get user input for triangle case selection
switch (triangle)
{
// cases
}
break;
case 2:
// show quadrangle menu & get user input for quadrangle case selection
switch (quadrangle)
{
case 0:
// exit quadrangle switch and enter case 1 of choice switch
choice = 1; // loop again <===============
getMainUserInput = false; // <===============
break;
case 1:
// do something with square
break;
case 2:
// do something with rectangle
break;
}
break;
default:
// do something
break;
}
}
} while (choice != 0);
bool getMainUserInput=true;//现在还不清楚你到底想要实现什么。如果您在案例2中-在四边形中,如果没有案例,则开关将匹配中断
将带您回到零位。那么你想做什么?你能更好地解释一下“我想回到以前的菜单”是什么意思吗?“返回”难道不是简单地不设置choice=0
?
bool getMainUserInput = true; // <===============
int choice = 0;
do
{
if (getMainUserInput) { // <===============
// show main menu & get user input
}
getMainUserInput = true; // Set as default for next loop <===============
switch (choice)
{
case 1:
// show shape menu & get user input for shape selection
switch (shape)
{
case 0:
// exit this switch and begin new iteration of do-while
case 1:
// show triangle menu & get user input for triangle case selection
switch (triangle)
{
// cases
}
break;
case 2:
// show quadrangle menu & get user input for quadrangle case selection
switch (quadrangle)
{
case 0:
// exit quadrangle switch and enter case 1 of choice switch
choice = 1; // loop again <===============
getMainUserInput = false; // <===============
break;
case 1:
// do something with square
break;
case 2:
// do something with rectangle
break;
}
break;
default:
// do something
break;
}
}
} while (choice != 0);