C# 中途离开?
我无法跳出代码中的While循环和方法。用户可以选择输入1或2,选择0取消退出菜单和方法。但是,正如现在的代码一样,我猜开关中的默认选项会阻止它离开While循环!?我能用另一种更好的方法吗C# 中途离开?,c#,C#,我无法跳出代码中的While循环和方法。用户可以选择输入1或2,选择0取消退出菜单和方法。但是,正如现在的代码一样,我猜开关中的默认选项会阻止它离开While循环!?我能用另一种更好的方法吗 // Read user input public void ReadUserInput() { Console.Write("Your choice? "); int choice = -1; while (choice !=
// Read user input
public void ReadUserInput()
{
Console.Write("Your choice? ");
int choice = -1;
while (choice != 0)
{
if (int.TryParse(Console.ReadLine(), out choice))
{
switch (choice)
{
case 1:
ShowSchedule(1);
break;
case 2:
ShowSchedule(2);
break;
default:
ErrorMessage(); // Call method to show error message
ReadUserInput(); // Call method for new input
break;
}
}
else
{
// Call method to show error message
ErrorMessage();
Start();
}
}
}
只需添加一个
case 0:
break;
如果用户输入0,则退出循环。如果方法中确实没有应该在循环之后运行的代码,您也可以使用
case 0:
return;
只需添加一个
case 0:
break;
如果用户输入0,则退出循环。如果方法中确实没有应该在循环之后运行的代码,您也可以使用
case 0:
return;
您可以使用return关键字完全退出函数。您可以使用return关键字完全退出函数。只需放置初始控制台。在循环中写入,不要递归调用ReadUserInput。只需放置初始控制台。在循环中写入,不要递归调用ReadUserInput。如果要中断开关和while,只需在此处使用return关键字:
while (choice != 0)
{
if (int.TryParse(Console.ReadLine(), out choice))
{
switch (choice)
{
case 0:
return; //returns from the FUNCTION! So from the switch AND while
....
....
....
}
}
}
如果要中断swith和while,只需在此处使用return关键字:
while (choice != 0)
{
if (int.TryParse(Console.ReadLine(), out choice))
{
switch (choice)
{
case 0:
return; //returns from the FUNCTION! So from the switch AND while
....
....
....
}
}
}
这不会破坏开关而不是时间吗?@moguzalp我认为“也会破坏时间”不是通过条件评估为false退出循环的官方术语,但是的,这就是重点。谢谢,但这不起作用!现在,如果用户输入4或任何不需要的符号(如A),我不会收到错误消息?这是怎么回事?如果用户输入4,则采用默认分支,并显示错误消息和重复。如果输入“A”,则TryParse返回false,因此else分支会给出错误消息。如果它与该代码的行为不同,则不太可能是框架中的错误。如果0是第一个输入的数字,则它可以工作,但如果我输入2,然后当它等待新的选择并输入0时,它只要求新的选择!?这不会破坏开关而不是时间吗?@moguzalp我认为“也会破坏时间”不是通过条件评估为false退出循环的官方术语,但是的,这就是重点。谢谢,但这不起作用!现在,如果用户输入4或任何不需要的符号(如A),我不会收到错误消息?这是怎么回事?如果用户输入4,则采用默认分支,并显示错误消息和重复。如果输入“A”,则TryParse返回false,因此else分支会给出错误消息。如果它与该代码的行为不同,则不太可能是框架中的错误。如果0是第一个输入的数字,则它可以工作,但如果我输入2,然后当它等待新的选择并输入0时,它只要求新的选择!?您是否已完成代码执行并通过循环观察到变量的值?是否已完成代码执行并通过循环观察到变量的值?谢谢,但这不起作用。如果我输入0,它仍然要求新的输入?对我有效-你确定你删除了额外的ReadUserInput调用吗?谢谢,但这不起作用。如果我输入0,它仍然要求新的输入?对我来说很有效-你确定你删除了额外的ReadUserInput调用吗?当然,不管你想在哪里留下该方法。我想这应该在默认部分中,在中断之前,或者替代它。我想这应该是在默认区域中,在中断之前,或者可能是代替它。第一次可以正常工作,但是当我第三次输入0时,在输入1或2之后,它就不工作了@3D Krativ:不太清楚你的用户交互是如何工作的,所以。您确定在1、2之后,Console.ReadLine/ReadChar再次调用,以便从用户处获得新的输入吗?问题解决了!我是对一个方法的调用,该方法使用输入初始化该方法。现在它在没有case 0:return的情况下运行良好,我想当While语句等待输入0时,它应该在没有case 0:return的情况下运行。正当谢谢你的帮助!第一次可以正常工作,但是当我第三次输入0时,在输入1或2之后,它就不工作了@3D Krativ:不太清楚你的用户交互是如何工作的,所以。您确定在1、2之后,Console.ReadLine/ReadChar再次调用,以便从用户处获得新的输入吗?问题解决了!我是对一个方法的调用,该方法使用输入初始化该方法。现在它在没有case 0:return的情况下运行良好,我想当While语句等待输入0时,它应该在没有case 0:return的情况下运行。正当谢谢你的帮助!