-1

我正在 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;
  }
}

结果表明,我的代码并非适用于所有情况(尽管适用于大多数情况),而且老师的代码也不同。

为什么这段代码不起作用?

4

4 回答 4

2

你做了什么:

 if(a>b || a>c){
  return a;
  }

如果a>b不是呢>c??你错了。

您应该在任何地方使用if(a>b && a>c)(&&而不是||)。

于 2013-04-29T05:44:53.200 回答
0

if(a>b || a>c)如果 a > b OR a > c,则认为为真。由于您只想返回所有值中最高的值,因此您需要&&哪个表示 AND 而不是||哪个表示 OR。

于 2013-04-29T05:43:35.730 回答
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;
}
于 2013-04-29T05:44:56.027 回答
0

使用&&运算符而不是||

于 2013-04-29T05:47:54.883 回答