【问题标题】:Making a conditional loop condition?制作条件循环条件?
【发布时间】:2012-07-24 15:17:00
【问题描述】:

我想创建一个 while 循环,它将在两个条件之一下继续运行,其中选择的一个被确定为条件。例如,它类似于while(if (c = true) a<b else b<a)。有什么简单的语法吗?还是我必须采取蛮横的方式并执行以下操作?

if (c = true) 
{ 
   while(a<b)
   {
   }
} 
else 
{
   while(b<a)
   {
   }
}

【问题讨论】:

    标签: c# loops while-loop conditional-statements


    【解决方案1】:

    您可以利用布尔求值的短路特性,并且:

    while ((c && a < b) || (!c && b < a)) {
        // ...
    }
    

    但是,您可能会发现这很难阅读。另一种方法可能是使用条件运算符:

    while (c ? (a < b) : (b < a)) {
        // ...
    }
    

    【讨论】:

    • 只有在循环期间 c 切换为 false 时才会这样做。他所拥有的可能是他将得到的最好的。编辑 - 哦,你涵盖了这两个条件。没看到。棘手的 1 个字母变量。
    • 啊,这是完美的(而且也不难阅读);谢谢!
    • @Wug 在循环到达之前我将 c 设置为一个特定的值,所以使用他提供的语法,不需要在循环中切换它;这就是我需要的。
    • 我将其解读为在一种条件下运行的一个循环。没看到第二个条件的a和b翻转了。
    • @ASpirin:a &lt; b 的倒数是b &lt;= a,与b &lt; a 不同。
    【解决方案2】:

    最简单的方法是:

    while( c && a<b || !c && b<a )
    {
      ...
    }
    

    抱歉,如果我的 C# 语法不正确。我是一个 C++ 迷。 =)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-25
      • 1970-01-01
      • 2013-01-21
      • 2023-03-26
      • 2015-08-19
      • 2015-05-23
      • 2020-11-12
      • 2020-01-23
      相关资源
      最近更新 更多