我正在从CodingBat.com在线进行这些练习测验。这就是问我的问题:
给定三个int值
a, b, c
返回最大值。
intMax(1, 2, 3) → 3
intMax(1, 3, 2) → 3
intMax(3, 2, 1) → 3
所以我设置了这段代码并检查结果。
public int intMax(int a, int b, int c) {
if(a>b || a>c){
return a;
}
if(b > a|| b>c){
return b;
}
else{
return c;
}
}
结果显示我的代码并不适用于所有情况(虽然对大多数情况都有效),而且教师的代码也不同。
为什么这段代码不起作用?
答案 0 :(得分:2)
你做了什么:
if(a>b || a>c){
return a;
}
如果a>b
但不是>c
怎么办?你错了。
您应该到处使用if(a>b && a>c)
(&&
而不是||
)。
答案 1 :(得分:0)
if(a>b || a>c)
被认为是真的。 b OR a> C。由于您只想返回所有值中最高的值,因此您需要&&
,这意味着AND代替||
,这意味着OR。
答案 2 :(得分:0)
使用&&
运算符来实现此目的。
因为你的情况在虚假状态下变为真实。
例如:
输入:[5,9,2]
if(a>b || a>c){
return a;
这将提供输出5
而不是9
。
因此请使用&&
运算符。
if(a>b && a>c){
return a;
}
if(b > a && b>c){
return b;
}
else{
return c;
}
答案 3 :(得分:0)
使用&&
运算符代替||