java - 简单的二十一点

标签 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>21){
  return a;
  }
  if (b<21 && a>21){
  return b;
  }
  if (21-a < 21-b){
  return a;
  }
  return b;
}

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

最佳答案

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
}

所以我猜你的问题是你的条件中没有包含 21。

关于java - 简单的二十一点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18649606/

相关文章:

Java 正则表达式 - 如何替换模式或如何

android - "Eclipse"故障信息错误不断出现

android - 使用 retrolambda 和 Android 时出现 eclipse 错误

java - Tomcat JDBC 池 : Too many connections

java - 使用java处理大型CSV文件的有效方法

java - Spring Ldap : Lookup dn without throwing exception if it isn't there

java - 客户端-服务器应用程序空指针异常

java - 如何使用相同的字符串在 IDE 和 .jar 中加载资源

Eclipse 调试 View 中未显示 Java 源代码

java - 调试java程序时如何在eclipse中执行某些功能?