C#无限循环

时间:2014-05-21 11:09:30

标签: c# loops

谁能告诉我它无限循环的原因?

       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所以我认为问题是在条件下。有什么想法吗?

6 个答案:

答案 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,然后它将结束。