codingbat上的布尔错误

时间:2016-10-07 23:24:54

标签: java

我正在编写关于编码的编码练习,这是我想要做的:

给定2个正的int值,返回10..20(含)范围内的较大值,如果两者都不在该范围内,则返回0。

max1020(11,19)→19 max1020(19,11)→19 max1020(11,9)→11 max1020(9,21)→0

我的代码:

public boolean IsInRange(int value)
{
  return value >= 10 && value <= 20;
}

public int max1020(int a, int b) {
  if (IsInRange(a) && IsInRange(b))
  return a > b ? a : b;
  else if (IsInRange(a))
  return a;
  else if (IsInRange(b))
  return b;

}

我不明白为什么它不起作用,它给了我这个错误:

Error:  public int max1020(int a, int b) {
               ^^^^^^^^^^^^^^^^^^^^^
This method must return a result of type int

Possible problem: the if-statement structure may theoretically 
allow a run to reach the end of the method without calling return.
Consider adding a last line in the method return some_value; 
so a value is always returned.

1 个答案:

答案 0 :(得分:1)

我没有其他声明所以a和b的最后一个输入不起作用。 它应该是这样的:

public boolean IsInRange(int value) {
    return value >= 10 && value <= 20;
}

public int max1020(int a, int b) {
  if (IsInRange(a) && IsInRange(b))
      return a > b ? a : b;
  else if (IsInRange(a))
      return a;
  else if (IsInRange(b))
      return b;
  else
      return 0;
}