谁能告诉我它无限循环的原因?
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作为例子时它将其中的一个切换为true所以我认为问题是在条件下。有什么想法吗?
答案 0 :(得分:1)
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个是假的。也许你需要&& (和)而不是|| (或)?
答案 1 :(得分:0)
只要rat1,rat2,rat3,rat4或rat5是假的,你的while条件就会循环。看看前面5行代码;其中一个布尔将永远是真的,而其他布尔都是假的。
答案 2 :(得分:0)
以下行中只有一行为真,其他行为假
rat1 = (ratswitch == 1);
rat2 = (ratswitch == 2);
rat3 = (ratswitch == 3);
rat4 = (ratswitch == 4);
rat5 = (ratswitch == 5);
因此,您的情况将始终评估为真
. . .
}
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)
答案 3 :(得分:0)
ratswitch
不能同时与5个值相等,因此rat1,rat2,rat3,rat4,rat5中的至少4个将是假的并且它将继续循环。
尝试使用&&
代替||
答案 4 :(得分:0)
假设你想在其中一个开关变为真时退出循环,你需要改变你的while条件来说:
while (rat1 == false && rat2 == false && rat3 == false && rat4 == false && rat5 == false)
答案 5 :(得分:0)
只要您的某个鼠标值等于false,循环就会继续执行。
正如你现在所做的那样,结束它的唯一情况是将所有值设置为true,而不是像你想要的那样。
尝试使用and和(||
)更改或(&&
),它应该执行,直到其中一个鼠标值更改为true,然后它将结束。