循环不起作用或永不结束C#

时间:2020-03-16 21:01:25

标签: c# loops break

我正在尝试学习循环,它们正要打破我的边缘。这个循环根本没有起作用,或者从未结束过,这导致了一些严重的压力。如果有人可以帮助我,那就太好了。该计划的目的是使循环继续进行,直到有人写出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.");
        }
    }
}

}

1 个答案:

答案 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"))

将适用于yesYESyEsYeS,...

将各个部分放在一起进行工作循环

// 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