而循环不会';t在错误条件下退出

本文关键字:错误 错误条件 条件下 退出 循环 | 更新日期: 2023-09-27 17:59:19

static void Main(string[] args)
{
    string name = null, surname = null;
    while (name != "A" && surname != "A")
    {
        Console.WriteLine("Enter Name:");
        name = Console.ReadLine(); // Point A
        Console.WriteLine("Enter Surname:");
        surname = Console.ReadLine(); // Point B
    }
    Console.WriteLine("Oops");
    Console.ReadLine();
}

循环运行良好:

输出1:

输入名称:

约翰·

输入姓氏:

Peter

输入名称:

Jack

输入姓氏:

Andrew

输出2:(尝试在A点打破循环(

输入名称:

//循环没有退出,而是转到下一个语句

输入姓氏:

Peter

Oops

当我试图在点A中断循环时,循环不会退出,而是转到下一个语句,然后在点B 之后退出

问题:为什么它不在点退出循环,我如何使它在点A退出?

而循环不会';t在错误条件下退出

循环条件将在输入整个代码块之前进行检查,而不是在代码中的每个语句执行之后。您可以添加一个条件来执行第二部分,也可以中断循环或强制检查循环条件。

环路中断:

while (name != "A" && surname != "A")
{
    Console.WriteLine("Enter Name:");
    name = Console.ReadLine(); // Point A
    if (name == "A")
        break;
    Console.WriteLine("Enter Surname:");
    surname = Console.ReadLine(); // Point B
}

设置执行其余代码的条件:

while (name != "A" && surname != "A")
{
    Console.WriteLine("Enter Name:");
    name = Console.ReadLine(); // Point A
    if (name != "A")
    {
        Console.WriteLine("Enter Surname:");
        surname = Console.ReadLine(); // Point B
    }
}

强制检查循环条件(continue之后的代码将不会执行(:

while (name != "A" && surname != "A")
{
    Console.WriteLine("Enter Name:");
    name = Console.ReadLine(); // Point A
    if (name == "A")
        continue;
    Console.WriteLine("Enter Surname:");
    surname = Console.ReadLine(); // Point B
}

只有在while循环中的所有代码都已处理时,才会检查条件。所以一切都很好。

while (true)
{
    Console.WriteLine("Enter Name:");
    name = Console.ReadLine(); // Point A
    if (name=="A")
    {
        return;
    }
    Console.WriteLine("Enter Surname:");
    surname = Console.ReadLine(); // Point B
    if (surname=="A")
    {
        return;
    }
}

您可以更改循环块。

while (true)
{
    Console.WriteLine("Enter Name:");
    name = Console.ReadLine(); // Point A
    if(name =="A")
        break;
    Console.WriteLine("Enter Surname:");
    surname = Console.ReadLine(); // Point B
    if(surname == "A")
        break;
 }

只有在每次执行整个循环体时才会检查循环条件。如果你想突破循环,你可以使用break语句

static void Main(string[] args)
{
    string name = null, surname = null;
    while (surname != "A")
    {
        Console.WriteLine("Enter Name:");
        name = Console.ReadLine(); // Point A
        if (name == "A")
        {
            break;
        }
        Console.WriteLine("Enter Surname:");
        surname = Console.ReadLine(); // Point B
    }
    Console.WriteLine("Oops");
    Console.ReadLine();
}

在重新检查循环的条件之前,循环将遍历所有指令。

您可以使用if语句检查名称是"A"还是"A",然后在计算结果为true时使用break命令,使其在点A退出。

if(name == "A" || name == "a") break;