Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单21点_Java_Eclipse - Fatal编程技术网

Java 简单21点

Java 简单21点,java,eclipse,Java,Eclipse,这里的问题是:给定2个大于0的int值,返回最接近21的值,而不必经过检查。如果两者都超过,则返回0 blackjack(19, 21) → 21 blackjack(21, 19) → 21 blackjack(19, 22) → 19 到目前为止,我所拥有的: public int blackjack(int a, int b) { if (a>21 && b>21){ return 0; } if (a<21 && b&

这里的问题是:给定2个大于0的int值,返回最接近21的值,而不必经过检查。如果两者都超过,则返回0

blackjack(19, 21) → 21
blackjack(21, 19) → 21
blackjack(19, 22) → 19
到目前为止,我所拥有的:

 public int blackjack(int a, int b) {
  if (a>21 && b>21){
  return 0;
  }
  if (a<21 && b>21){
  return a;
  }
  if (b<21 && a>21){
  return b;
  }
  if (21-a < 21-b){
  return a;
  }
  return b;
}
public int blackjack(int a,int b){
如果(a>21&&b>21){
返回0;
}
如果(a21){
返回a;
}
如果(b21){
返回b;
}
如果(21-a<21-b){
返回a;
}
返回b;
}

这个问题来自codingbat.com,对于它显示的所有测试,该代码都有效,但当它完成并显示“其他测试”时,该代码失败。我想在某种情况下这是行不通的,但我现在想不起来。有什么想法吗?

如果a=21,b=22,那么它将返回不正确的b

public int blackjack(int a,int b){
public int blackjack(int a, int b) {
// if both a and b are outside the valid range
if (a > 21 && b > 21)
  return 0;

// if a is within the valid range but b is not
if (a <= 21 && b > 21)
  return a;

// if b is within the valid range but a is not
if (b <= 21 && a > 21)
  return b;

// if both a and be are within the valid range
return (a-b >= 0) ? a : b;

// Alternative: return Math.max(a, b);    ---as per SimonT in the comment
}
//如果a和b都超出有效范围 如果(a>21&&b>21) 返回0; //如果a在有效范围内,但b不在有效范围内 如果(a 21) 返回a; //如果b在有效范围内,但a不在有效范围内 如果(b 21) 返回b; //如果a和be都在有效范围内 返回值(a-b>=0)?a:b; //备选方案:返回Math.max(a,b);---根据评论中的SimonT }

因此,我猜您的问题在于您的条件中没有包含21。

您忘记在您的条件中指定
=
操作。将第2和第3个条件更改为:

if (a<=21 && b>21){
  return a;
}
if (b<=21 && a>21){
  return b;
}
if(a21){
返回a;
}
如果(b21){
返回b;
}

如果a为18,b为19,程序返回什么?为什么?最接近底部21的数字不是最大的数字吗?您缺少至少一个正好是21的情况。对于最后一行,为什么不
返回Math.max(a,b)?或者
返回(a>b)?a:b这是一个网站上的代码,我不确定你是否可以使用库,所以我选择了直接的逻辑:)