【问题标题】:Can i have more conditions in one while-loop?我可以在一个while循环中有更多条件吗?
【发布时间】:2019-11-01 12:45:59
【问题描述】:

请问我是否可以像这样在一个 while 循环中拥有两个条件?

例如:

我已经在自己的代码中尝试了几乎所有内容。

int a = 0;
bool b = false;

while(a!=5 || b!=true) {
a++;
}

Console.WriteLine("A is successfuly loaded into 5.");
Console.WriteLine("Bool is still " + b);

我希望输出为 5,但在我的程序中我有一个无限循环。

【问题讨论】:

  • 为什么你认为b!=true 永远不会是真的?
  • 将条件更改为 (a!=5 && b!=true) - 整个条件应评估为 True 以使循环继续,或 False 使其停止/退出/中断
  • 听起来您有兴趣继续循环,直到 one 条件不再成立 - 如果这是您的意图,您应该使用“和”符号 ( &&) 而不是“或”( || )
  • 作为风格问题,通常首选使用!b,而不是写b!=true或b==false。当b 的编译时类型为bool 时,所有这些都是等价的。 (对于可为空的布尔值b,它们都是不同的。)

标签: c# while-loop conditional-statements


【解决方案1】:

变量b设置为false,不改变。

所以,b!=true 的条件始终为真。

此条件位于“或”(||)运算符的右侧。

因此,导致无限循环。

【讨论】:

    【解决方案2】:

    由于您的第二个条件,这是一个无限循环。 while(a!=5 || b!=true) 使用 || (OR) 运算符,这意味着只要其中一个条件为真,整个条件都为真

    T || F = T ---> 真或假 == 真

    F || T = T ---> 假或真 == 真

    T || T = T ---> 真或真 == 真

    F || F = F ---> 错误或错误 == 错误

    您分配了b = false,然后检查b!=true(相当于b == false [这是您分配的])。这个条件是true,因此它无限进入循环。

    a!=5 || b!=true 必须为 false 才能退出循环。

    【讨论】:

      【解决方案3】:

      在设计具有多个条件的检查时,关键是要考虑&& 和|| 操作的工作原理。使用|| 将导致循环继续,直到两个条件都为假。使用 && 将导致循环继续,直到 either 条件为 false。

      在您的情况下,您使用了||,因此循环将一直持续到a=5 AND b=true。由于 b 永远不会为真,因此您最终会陷入无限循环。

      【讨论】:

        【解决方案4】:

        我不确定您正在寻找的确切行为,但有三个类似的选项可以编写您的示例循环,具体取决于您希望这两个条件的行为方式:

        或者

        while(a != 5 || b != true) {
        a++;
        }
        

        如果a != 5 评估为“true”或b!= true 评估为“true”或a != 5 和b!= true 评估为“true”,则循环将继续。第一次 两个 表达式计算结果为“false”时,循环将退出。

        和

        while(a != 5 && b != true) {
        a++;
        }
        

        如果a != 5 和b!= true 的计算结果均为“真”,则循环将继续。当这些表达式中的一个或两个第一次计算为“false”时,循环将退出。

        异或

        while((a != 5 && b != true) || (a == 5 && b == true  )) {
        a++;
        }
        

        如果a != 5 和b!= true 都评估为“true”,或者都评估为“false”,则循环将继续。第一次正好一个这两个表达式的计算结果为“false”,循环将退出。

        【讨论】:

          【解决方案5】:

          你有一个无限循环,因为b 总是假的,因此,循环继续,因为|| 意味着OR,并且你已经实现它继续只要a 不是 5 或 b 不正确。

          【讨论】:

          • 好吧,我想如果一个语句在 OR 中为真(beucase int 为真但 bool 不是),循环中断并继续到控制台行
          猜你喜欢
          • 2023-04-03
          • 1970-01-01
          • 2014-06-04
          • 1970-01-01
          • 2015-09-08
          • 2019-09-03
          • 1970-01-01
          • 1970-01-01
          • 2012-09-09
          相关资源
          最近更新 更多