也许我正在用大锤拍苍蝇但是......
我正在CodingBat;
进行这项考试给定2个整数,a和b,返回它们的总和。然而,[13,19]范围内的“青少年”值更加幸运。因此,如果其中任何一个值是青少年,则返回19。
这就是我想出的答案;
public int teenSum(int a, int b)
{
if (a >= 13 && a <= 19) return 19;
if (b >= 13 && b <= 19) return 19;
else return a + b;
}
我想知道是否有办法在一个“if”语句中解决这个问题......是否存在?
答案 0 :(得分:1)
如果您使用三元运算符(? :
),则可以使用零if
语句执行此操作。像,
public int teenSum(int a, int b)
{
return (a > 12 && a < 20) || (b > 12 && b < 20) ? 19 : a + b;
}
答案 1 :(得分:0)
使用逻辑OR可以得到逻辑上等效的表达式:
if ((a >= 13 && a <= 19) || (b >= 13 && b <= 19)) return 19;
答案 2 :(得分:0)
不确定。通过将两个if语句作为保护条款,你真正做的是逻辑OR。所以:
if ((a >= 13 && a <= 19) || (b >= 13 && b <= 19)) return 19;
也可以。
顺便说一下,else
是多余的。
答案 3 :(得分:0)
使用if
三元运算符,您可以在没有?:
语句的情况下完全执行此操作。
return (a >= 13 && a <= 19) || (b >= 13 && b <= 19) ? 19 : a + b;