C# 正在尝试创建开关盒菜单
因此,我正在为我的程序设计一个开关盒菜单,但我有多个问题(我可能遗漏了一些真正明显的问题) 因此,首先,我尝试实现一个while循环,以便在执行任何case方法后返回菜单。然而,当尝试实现while循环时,出于某种原因,它似乎无法识别我的bool变量 其次,我不太确定如何让用户在完成他们想要做的事情后返回开始菜单。在他们选择的情况下,这可能有一个真正简单的解决方案,但我就是找不到 [守则]C# 正在尝试创建开关盒菜单,c#,switch-statement,C#,Switch Statement,因此,我正在为我的程序设计一个开关盒菜单,但我有多个问题(我可能遗漏了一些真正明显的问题) 因此,首先,我尝试实现一个while循环,以便在执行任何case方法后返回菜单。然而,当尝试实现while循环时,出于某种原因,它似乎无法识别我的bool变量 其次,我不太确定如何让用户在完成他们想要做的事情后返回开始菜单。在他们选择的情况下,这可能有一个真正简单的解决方案,但我就是找不到 [守则] private string[] säten = new string[24]; priv
private string[] säten = new string[24];
private int Antal_passagerare = 0;
public void Run()
{
bool continue = true;
while(continue)
{
string menu = (Console.ReadLine());
int tal = Convert.ToInt32(menu);
switch(tal)
{
case 1:
Add_passagerare;
break;
case 2:
break;
case 3:
break;
}
}
}
[/code]您的问题是您的局部变量名与控制循环流(例如for、foreach、while等)的C#关键字(或语句)冲突。另一个控制流关键字是
break
必须重命名局部变量。但是由于流控制关键字,您可以删除局部变量(见下文)。如果用户输入了非数值,还可以使用Int32.TryParse
避免程序崩溃。在这种情况下,您可以看到声明和工作:
然而,当尝试实现while循环时,出于某种原因,它似乎无法识别我的bool变量。
-你是什么意思?你的循环永远不会结束。其次,我不太确定如何让用户返回开始菜单
-我想你指的是嵌套菜单,通常这是通过状态机模式完成的。。。您可能想要搜索它,尽管现在可能有点过头了。这甚至可以编译吗?我认为不允许使用c#关键字continue
作为局部变量的名称。我可能认为使用while循环是完全错误的,但我希望用户能够在使用其中一个案例后返回菜单并再次使用它。这可能与我如何让用户在使用某个case方法后返回菜单有关,但如前所述,这是我需要了解的另一件事。是的,“状态机模式”对于学习编程来说听起来有点过分了1我在这篇文章中找到了continue while循环方法,可能是我用错了,也可能是它在这种情况下不起作用,我不知道。为了让后面的其他人更了解您的评论“您必须重命名局部变量”:如果有足够的理由让变量命名为与关键字相同的名称,在C#中,您可以在它前面加上@符号。Per OP的原始语法:bool@continue=true代码>但是+1以获得更好的流,从而首先避免变量。带有中断的无限循环一开始可能感觉不正确,但有时是解决问题的正确方法。
// Start an infinite loop. Use the break statement to leave it.
while (true)
{
string userInput = Console.ReadLine();
// Quit if user pressed 'q' or 'Q'
if (userInput.Equals("Q", StringComparison.OrdinalIgnoreCase)
{
// Leave the infinite loop
break;
}
// Check if input is valid e.g. numeric.
// If not show message and ask for new input
if (!(int.TryParse(userInput, out int numericInput))
{
Console.WriteLine("Only numbers allowed. Press 'q' to exit.");
// Skip remaining loop and continue from the beginning (ask for input)
continue;
}
switch (numericInput)
{
case 1:
break;
case 2:
Add_passagerare();
break;
case 3:
break;
}
}