我正在尝试学习循环,它们正要打破我的边缘。这个循环根本没有起作用,或者从未结束过,这导致了一些严重的压力。如果有人可以帮助我,那就太好了。该计划的目的是使循环继续进行,直到有人写出yes / yes / YES(最好是yes的任何形式),然后中断并继续代码的下一部分,即一些readlines和write行,但由于没有循环还没有允许我。非常感谢您的投入。
Console.WriteLine("Hello Inspector!");
Console.WriteLine("Are you ready to identify the suspects? Just write yes and we'll get started.");
string Start = Console.ReadLine();
Startup();
while (Start.Contains("")==false)
{
Console.WriteLine("Just type yes when you are ready.");
if (Start.Contains("Yes") == true)
Console.WriteLine("Let's start.");
break;
}
}
static void Startup()
{
string Start = Console.ReadLine();
if (Start.Contains("yes") == true)
{
Console.Clear();
Console.WriteLine("Here are the suspects:");
}
else
{
Console.WriteLine("Just type yes when you are ready.");
}
}
}
}
答案 0 :(得分:2)
您的代码有几个问题:
1)您只需阅读一次用户输入-正如已经提到的 m.sh ,您需要输入
Start = Console.ReadLine();
在您的while
循环中。
2)您希望break
仅在满足条件的情况下才能捕获,因为您缺少像这样的{ }
>
if (Start.Contains("Yes") == true)
{
Console.WriteLine("Let's start.");
break;
}
3)不直接是编程错误,而是广为接受:显式比较布尔值。只需使用
if (Start.Contains("yes"))
代替
if (Start.Contains("yes") == true)
4)也已经提到-使用.ToLower()
允许输入任何大写字母
if (Start.ToLower().Contains("yes"))
将适用于yes
,YES
,yEs
,YeS
,...
将各个部分放在一起进行工作循环
// many coding guidelines ask you to use string.Empty rather than "". [I.]
string Start = string.Empty;
while (!Start.ToLower().Contains("yes"))
{
Console.WriteLine("Just type yes when you are ready.");
Start = Console.ReadLine();
}
Console.WriteLine("Let's start.");
请注意!
条件的否定while
-只要不满足条件,就可以运行循环,而不必在循环中检查是否需要中断。
另一种循环方式可能是do { } while();
,在循环结束时检查您的情况:
string Start = string.Empty;
do
{
Console.WriteLine("Just type yes when you are ready.");
Start = Console.ReadLine();
}
while (!Start.ToLower().Contains("yes"));
如果逐步执行在调试器中运行的代码,则会注意到不同的行为以及如何将do {} while()
视为比while() { }
更快的代码。
I。 this post