如何将这个 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.bet
和 return
进行赋值。
此外,您不应在此处尝试使用三元运算符。生成的代码将难以阅读和调试。
你可以写
return (this.bet = (bet > 0 && getPoints() >= bet ? bet : 0)) != 0;
-- 但为了清楚起见,我不会。
分解:
- 条件表达式决定下注大小,0 或指定。
- 分配相应地设置
this.bet
- 不等式根据我们输入
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; }
...
}
(修正错误)
我想把这个 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.bet
和 return
进行赋值。
此外,您不应在此处尝试使用三元运算符。生成的代码将难以阅读和调试。
你可以写
return (this.bet = (bet > 0 && getPoints() >= bet ? bet : 0)) != 0;
-- 但为了清楚起见,我不会。
分解:
- 条件表达式决定下注大小,0 或指定。
- 分配相应地设置
this.bet
- 不等式根据我们输入
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; }
...
}
(修正错误)