如何将这个 if-else 语句变成一行短格式

How to turn this if-else statement into one line short form

我想把这个 if else 状态变成一行,我该怎么做?请帮助

if(bet > 0 && this.getPoints() >= bet) {
    this.bet = bet;
    return true;
} else {
    this.bet = 0;
    return false;
}

我试过了

if(bet > 0 && this.getPoints() >= bet)? 
    this.bet=bet, return true: 
    this.bet=0,r eturn false;

您的语法不正确。三元运算符的语法是

condition ? valueIfTrue : valueIfFalse

所以你可以使用这个:

boolean shouldUpdateBet = bet > 0 && this.getPoints() >= bet;
this.bet = shouldUpdateBet ? bet : 0;
return shouldUpdateBet;

但更简洁并不意味着更具可读性。选择最适合您的代码的可读性。

换行符无论如何都会被编译器删除,所以你可以删除该行 打破您的代码,使其成为单行代码! ;)

更严肃地说,你不能在一个三元语句中完成。因为三元运算符在子句中只接受一个表达式。您不能在单个子句中对 this.betreturn 进行赋值。

此外,您不应在此处尝试使用三元运算符。生成的代码将难以阅读和调试。

可以

   return (this.bet = (bet > 0 && getPoints() >= bet ? bet : 0)) != 0;

-- 但为了清楚起见,我不会。

分解:

  1. 条件表达式决定下注大小,0 或指定。
  2. 分配相应地设置this.bet
  3. 不等式根据我们输入 this.bet 的内容确定 return 值,此时我们知道无效投注为零,有效投注为非零

为了便于阅读,我至少要写两行:

this.bet = bet > 0 && getPoints() >= bet ? bet : 0;
return this.bet > 0;

但我觉得你在刹车 command-query separation。 setting部分只用一个方法,接下来添加一个方法查询bet有值:

class ... {

  int bet = 0;
  void setBet(int bet) {
    this.bet = bet > 0 && getPoints() >= bet ? bet : 0;
  }
  boolean validBet() {
    return bet != 0;
  }
  int getPoints () { ... }
  int getBet() { return bet; } 
  ...
}

(修正错误)