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()
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容