【问题标题】:C# restart a while loop in the middleC#在中间重新启动一个while循环
【发布时间】:2017-11-25 08:14:53
【问题描述】:

在我的情况下,如果条件为假,我想重新启动一个 while 循环。这是因为我正在检查一个 ip 是否有效,并且它是否正常运行整个循环,如果不是,我需要它从那时起再次重新启动。我不能使用休息,我不想使用 goto。你有什么建议?

这是我的代码,我想在其中重新启动我的 while 循环。

while (calculateAgain == "y")
{
    Console.Write("Your ip here: ");
    string ip = Console.ReadLine();

    IpValidation(ip);
    if (IpValidation(ip) == false)
    {
        Console.WriteLine("Ugyldig IP og eller Subnet mask!\n");
        // goto or break
    }

在此之后,我的代码运行了很多... 告诉我一些除 goto 之外的解决方案。

【问题讨论】:

  • 如果您希望循环从顶部继续,请尝试continue

标签: c# loops while-loop


【解决方案1】:

你需要使用continue这个词

    if (IpValidation(ip) == false)
    {
        Console.WriteLine("Ugyldig IP og eller Subnet mask!\n");
        continue;
    }

这将跳过其余部分并转到循环的顶部。

【讨论】:

  • 记住区分大小写:continue 是正确的。
  • 成功了!我之前试过这个,但它没有用,然后我发现我有超过 1 个休息并改变了它们......然后voula
  • 愚蠢的手机自动大写:(
【解决方案2】:

有 continue 语句。如果它被击中,它将跳回到循环的开头。

while (calculateAgain == "y")
{
    // ...
    if (IpValidation(ip) == false)
    {
        Console.WriteLine("Ugyldig IP og eller Subnet mask!\n");
        continue;
    }
    Console.WriteLine("This will not be executed when continue is called");
}

【讨论】:

    【解决方案3】:

    您可以通过两种方式执行此操作,(通过使用 break 或 continue)break 将完全退出循环,continue 将跳过当前迭代。

    所以通过阅读您的问题。您需要在此处使用continue,因此您的示例可能如下所示:

    while (calculateAgain == "y")
    {
        Console.Write("Your ip here: ");
        string ip = Console.ReadLine();
    
        IpValidation(ip);
        if (IpValidation(ip) == false)
        {
            Console.WriteLine("Ugyldig IP og eller Subnet mask!\n");
            continue;
        }
    }
    

    这意味着,对于条件if (IpValidation(ip) == false),如果条件满足,下面的代码将被跳过(永远不会执行)

    【讨论】:

    • 记住区分大小写:continue 是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2020-09-20
    • 2019-10-16
    • 1970-01-01
    相关资源
    最近更新 更多