【问题标题】:Java While loop extra conditionsJava While 循环额外条件
【发布时间】:2020-11-03 04:28:54
【问题描述】:

在 JavaScript 中,您可以添加额外的条件,例如:

var b = 0.0;
var q = (void 0);
var e = -1.0;

while(q = e, b > 32.0){

    console.log(q);
    b++;

}

表示q等于e。

我尝试将 Java 代码改写为

Float b = 0.0;
Float q = Float.NaN;
Float e = -1.0;

do{

    q = e;
    b++;

}while(b < 32.0);

但是好像不能作为JS版本使用。

我可以将 q = e 添加到 while 条件吗?是否有任何有效的 Java 语法?

【问题讨论】:

    标签: java while-loop conditional-statements equals


    【解决方案1】:

    Java 没有像 JavaScript 这样的超灵活逗号运算符,因此您必须将语句分开。这不是一件坏事。 while(q = e, b &gt; 32.0) 风格很差。

    坚持使用常规的while 循环。 do-while 循环不会执行,因为它总是会至少执行一次 b++

    我会使用double 而不是float

    double b = 0.0;
    double q;
    double e = -1.0;
    
    q = e;
    while (b < 32.0) {
        b++;
        q = e;
    }
    

    我们还不如在声明 q 时对其进行初始化:

    double b = 0.0;
    double e = -1.0;
    double q = e;
    
    while (b < 32.0) {
        b++;
        q = e;
    }
    

    【讨论】:

      【解决方案2】:

      Java 中没有comma operator,即使有,也会被认为是糟糕的风格。

      您可以通过多种方式实现类似的目标。如果你定义一个接受任何参数并且总是返回 true 的函数:

      <T> boolean trick(T any) {
          return true;
      }
      

      您可以使用它在您想要的任何布尔上下文中潜入赋值表达式:

      while (trick(q = e) && b > 32.0){
          System.out.println(q);
          b++;
      }
      

      但同样,这将被视为可怕风格。不要在实际项目中使用它。

      【讨论】:

      • 一个优雅的解决方案!干杯!
      猜你喜欢
      • 1970-01-01
      • 2014-03-30
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      相关资源
      最近更新 更多