而循环不会';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退出?
循环条件将在输入整个代码块之前进行检查,而不是在代码中的每个语句执行之后。您可以添加一个条件来执行第二部分,也可以中断循环或强制检查循环条件。
环路中断:
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;