C# 而循环不';不能在错误的条件下退出
循环工作正常: 产出1: 输入名称: 约翰 输入姓氏: 彼得 输入名称: 杰克 输入姓氏: 安德鲁 输出2:(尝试在点A处断开循环) 输入名称: //循环未退出,但转到下一条语句C# 而循环不';不能在错误的条件下退出,c#,.net,while-loop,C#,.net,While Loop,循环工作正常: 产出1: 输入名称: 约翰 输入姓氏: 彼得 输入名称: 杰克 输入姓氏: 安德鲁 输出2:(尝试在点A处断开循环) 输入名称: //循环未退出,但转到下一条语句 while (true) { Console.WriteLine("Enter Name:"); name = Console.ReadLine(); // Point A if(name =="A") break; Console.WriteLine("Enter Su
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;
}
输入姓氏:
彼得
哎呀
当我试图在A点中断循环时,循环不会退出,而是转到下一个语句,然后在B点之后退出
问题:为什么它不在点处退出循环?我如何使它在点A处退出?循环条件将在进入整个代码块之前进行检查,而不是在代码中的每个语句执行之后。您可以添加条件以执行第二部分或中断循环或强制检查循环条件 打破循环:
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();
}
设置执行其余代码的条件:
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
}
}
强制检查循环条件(继续后的代码将不执行):
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
}
}
只有当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;
}
循环将在重新检查循环的条件之前,检查所有指令 您可以使用if语句检查name是“A”还是“A”,然后使用
break
命令(如果计算结果为true),使其在点A处退出
if(name==“A”| name==“A”)
中断代码>他们只是嫉妒你在睡觉时能正确回答:)谢谢,你的第一个例子将非常适合我的项目。我想说的是,尽管第一个例子提供了最快速、最容易理解的解决方案,但我建议不要打破循环。另外两个例子在长期维护和可读性方面更好,而且如果您决定在以后某个时间点扩展循环,也不太可能导致规避性错误。@Paulch先生,我也支持您!谢谢你的意见,我会考虑的。