c#无限do while循环
本文关键字:循环 while do 无限 | 更新日期: 2023-09-27 18:04:19
谁能告诉我为什么它会无限循环?
bool rat1 = (ratswitch == 1);
bool rat2 = (ratswitch == 2);
bool rat3 = (ratswitch == 3);
bool rat4 = (ratswitch == 4);
bool rat5 = (ratswitch == 5);
do
{
Console.WriteLine("Podano bledna ocene, uzyj liczb calkowitych z zakresu 1-5.");
ratswitchstring = Console.ReadLine();
while (ifintrat != true)
{
Console.WriteLine("Podano bledna ocene, uzyj liczb calkowitych z zakresu 1-5.");
ratswitchstring = Console.ReadLine();
ifintrat = int.TryParse(ratswitchstring, out ratswitch);
}
ratswitch = Convert.ToInt32(ratswitchstring);
rat1 = (ratswitch == 1);
rat2 = (ratswitch == 2);
rat3 = (ratswitch == 3);
rat4 = (ratswitch == 4);
rat5 = (ratswitch == 5);
}
while (rat1 == false || rat2 == false || rat3 == false || rat4 == false || rat5 == false);
我用调试器运行它,当我放置1或2时,它将其中1切换为true,例如,所以我认为问题是在while条件中。有什么想法吗?
rat1 = (ratswitch == 1);
rat2 = (ratswitch == 2);
rat3 = (ratswitch == 3);
rat4 = (ratswitch == 4);
rat5 = (ratswitch == 5);
只有一个可能是真的。
while (rat1 == false || rat2 == false || rat3 == false || rat4 == false || rat5 == false)
所以至少有4个是假的。也许你需要&&(and)而不是|| (or)?
当rat1, rat2, rat3, rat4或rat5为假时,while条件将循环。看看前面的5行代码;这些布尔值中的一个总是为真,而其他的都为假。
以下行只有一行为真,其他为假
rat1 = (ratswitch == 1);
rat2 = (ratswitch == 2);
rat3 = (ratswitch == 3);
rat4 = (ratswitch == 4);
rat5 = (ratswitch == 5);
因此,你的条件总是求值为true
. . .
}
while (true || true || true || true || false) // only one condition will return false
退出循环,当任何rat1 ....Rat5是真的,你应该写
while (rat1 == false && rat2 == false && rat3 == false && rat4 == false && rat5 == false)
ratswitch
不能同时等于5个值,因此rat1,rat2,rat3,rat4,rat5中至少有4个为假,并将继续循环。尝试使用&&
代替||
假设您希望在其中一个开关变为真值时退出循环,您需要更改while条件:
while (rat1 == false && rat2 == false && rat3 == false && rat4 == false && rat5 == false)
只要你的rat值中有一个等于false,循环就会继续执行。
就像你现在拥有的那样,唯一能结束它的情况是把你所有的值都设为真,而不是像你想的那样只有一个。
尝试用and和(&&
)更改or (||
),它应该执行,直到其中一个rat值更改为true,然后它将结束。