【问题标题】:Is there a way that I can tell my program that it has an "empty hand "?有没有办法告诉我的程序它有一个“空手”?
【发布时间】:2018-02-08 23:03:04
【问题描述】:

基本上它是一个卡片积分计数器,它根据您的卡片计算积分。但是,我也必须承认有人甚至可能没有卡片这一事实。所以我的问题是如何告诉我的程序是空手?

我正在考虑采用这种方法

hand.isEmpty();

但是甚至可以将方法放入方法中吗?

这是我的代码

public int countDeadwood(String hand) {

   int deadwood = 0;
   for(int i = 0; i < hand.length() ; i = i + 1)
   {

       if (hand.charAt(i)=='A')
           deadwood = deadwood + 1;
       if (hand.charAt(i)=='K')
           deadwood = deadwood + 10;
       if (hand.charAt(i)=='Q')
           deadwood = deadwood + 10;    
       if (hand.charAt(i)=='J')
           deadwood = deadwood + 10;
       if (hand.charAt(i)== 'T')
           deadwood = deadwood + 10;   
       if (hand.charAt(i)== 9)
           deadwood = deadwood + 9;
       if (hand.charAt(i)== 8)
           deadwood = deadwood + 8;
       if (hand.charAt(i)== 7)
           deadwood = deadwood + 7;
       if (hand.charAt(i)== 6)
           deadwood = deadwood + 6;
       if (hand.charAt(i)== 5)
           deadwood = deadwood + 5;
       if (hand.charAt(i)== 4)
           deadwood = deadwood + 4;
       if (hand.charAt(i)== 3)
           deadwood = deadwood + 3; 
       if (hand.charAt(i)== 2)
           deadwood = deadwood + 2;


   }
   return deadwood;
}

或者有没有其他方法可以空手添加?

【问题讨论】:

  • 当然可以在方法中调用方法。您已经使用 hand.length()hand.charAt() 这样做了。

标签: java for-loop methods


【解决方案1】:

首先,我想指出您用于计算枯木值的逻辑不是很优雅;至少您应该使用 if-else,尽管以下可能是更好的方法。当然,这是假设每个角色都代表一张卡片,并且只有有效的卡片才能遇到。

   char c = hand.charAt(i);
   if (c == 'A') {
       value += 1;
   } else if (Character.isDigit(c)) { 
       value += c - '0';
   } else {
       value += 10;
   }

要确认某人是否没有任何卡片,您可以检查是否有任何卡片。

   int deadwood = 0;
   if (hand.isEmpty()) {
       System.out.println("You have no cards");
   } else {
       for (int i = 0; i < hand.length(); i++) {
           char c = hand.charAt(i);
           if (c == 'A') {
               deadwood += 1;
           } else if (Character.isDigit(c)) {
               deadwood += c - '0';
           } else {
               deadwood += 10;
           }
       }
       System.out.println("You have " + deadwood + " points");
   }
   return deadwood;

不过,如果你只需要通过返回 0 来确认某人没有卡,你实际上不需要做任何事情。

  int deadwood = 0;
  for (int i = 0; i < hand.length(); i++) {
      char c = hand.charAt(i);
      if (c == 'A') {
          deadwood += 1;
      } else if (Character.isDigit(c)) {
          deadwood += c - '0';
      } else {
          deadwood += 10;
      }
  }
  return deadwood;

【讨论】:

  • 哦,这可能会派上用场。问题是,我不打算使用我们尚未涵盖的内容。数组是我们还没碰过的。
  • 使用 charAt(int i) 和你拥有的 for 循环非常好。使用hand.isEmpty() 与检查数组的长度是否为空一样。
【解决方案2】:

只需在使用 isEmpty() 方法的方法中进行 if 检查。

例子:

if(hand.isEmpty())
{
    //System.out.println("Sorry you have no cards");
    break; //break out of the entire for loop
}

【讨论】:

  • 我接受了你的建议,我所做的代码是“deadwood = 0:”,我想知道如果我有一只空手,我该如何停止循环?因为如果我空手而归,你就没有积分。
  • 啊,在这种情况下,您可以在显示 hand.isEmpty() 的 if 检查中执行此操作,只需在末尾写上带分号的 break。我改变了我的答案来告诉你如何。这表示如果这个 if 语句发生,那么我想跳出 for 循环并停止所有循环/迭代现在发生。你的 deadman = 0 也是如此,然后在新行上休息,就是这样。
  • 不用担心,如果这解决了您的问题,您能否将其标记为已接受。非常感激。 :)
  • 投反对票的原因是什么,以便我下次可以改进?
  • 那不是我。您给了我重要的建议,为此,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-04
  • 1970-01-01
  • 2011-02-06
  • 1970-01-01
相关资源
最近更新 更多