Ternary Operator - BlackJack

A question from codingBat.

Given 2 int values greater than 0, return whichever value is nearest to 21 without going over. Return 0 if they both go over.
blackjack(19, 21) → 21
blackjack(21, 19) → 21
blackjack(19, 22) → 19
Solution:

public int blackjack(int a, int b) {
int aVal = a > 21 ? 0 : a;
int bVal = b > 21 ? 0 : b;
return aVal>bVal? aVal:bVal;
}

Equivalent to:

public int blackjack(int a, int b) {
// The value of a/b, or 0 if over 21
int aVal = a;
if (aVal > 21) {
aVal = 0;
}
int bVal = b;
if (bVal > 21) {
bVal = 0;
}
// Now it works to just return whichever is larger.
if (aVal > bVal) {
return aVal;
}
else {
return bVal;
}
// You can write a very short version of this same strategy
// using the "ternary operator" ?: and Math.max()
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容