如果要把其他状态变成一行,我想怎么做?请帮助
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;
答案 0 :(得分:2)
您的语法不正确。三元运算符的语法为
condition ? valueIfTrue : valueIfFalse
因此您可以使用此:
boolean shouldUpdateBet = bet > 0 && this.getPoints() >= bet;
this.bet = shouldUpdateBet ? bet : 0;
return shouldUpdateBet;
但是更加简洁并不意味着更具可读性。选择什么使代码最容易阅读。
答案 1 :(得分:1)
换行符还是会被编译器剥离,因此您只需删除该行 破坏您的代码以使其成为一线! ;)
更重要的是,您不能在一个三元语句中做到这一点。因为三元运算符在子句中仅采用单个表达式。您不能在单个子句中为this.bet
和return
进行赋值。
此外,您不应在此处尝试使用三元运算符。生成的代码将难以阅读和调试。
答案 2 :(得分:0)
您可以写
return (this.bet = (bet > 0 && getPoints() >= bet ? bet : 0)) != 0;
-但出于清楚原因,我不会。
打破这一点:
this.bet
this.bet
确定返回值,这时我们知道无效投注为零,有效投注为非零答案 3 :(得分:0)
为了便于阅读,我至少将其设为两行:
this.bet = bet > 0 && getPoints() >= bet ? bet : 0;
return this.bet > 0;
但是我觉得你在刹车command-query separation。 仅对设置部分使用一种方法,然后添加一种方法来查询下注是否具有值:
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; }
...
}
(已修复错误)
答案 4 :(得分:-1)
使用三元运算符时,您不能在一行中执行此操作。您可以分两行执行此操作。
this.bet = (bet > 0 && this.getPoints() >= bet)? bet: 0;
return ( (bet > 0 && this.getPoints() >= bet)? true:false );