【问题标题】:Boolean Method Confusion布尔方法混淆
【发布时间】:2011-09-19 01:05:11
【问题描述】:

各位程序员大家好。有人可以向我解释这段代码到底是做什么的吗?启动方法让我有点失望(isHigherThan(Card card2));除此之外我很好。 card2 在 java 文件的其他任何地方都没有提到。

public boolean isHigherThan(Card card2)
{
    boolean result = false;

    if (face == card2.getFace())
    {
        if (suit > card2.getSuit())
            result = true;
    }
    else
    {
        if (face > card2.getFace())
            result = true;
    }

    return result; 
}

谢谢

【问题讨论】:

  • 究竟哪一部分你不明白? card2 来自哪里?这只是传入的方法参数。
  • getFace() 方法返回什么类型?

标签: java methods boolean


【解决方案1】:

您的isHigherThan 方法可能在Card 类中实现,该类至少具有以下属性:facesuit

这个方法可以像下面这样使用:

Card card1 = new Card(/* whatever paremeters your constructor takes*/);
Card card2 = new Card(/* ... */);

boolean res = card1.isHigherThan(card2);

现在,当您在方法中只看到 facesuit 时,此属性属于 card1。 所以当这种face == card2.getFace()比较完成时,他们基本上比较card1facecard2face

【讨论】:

    【解决方案2】:

    card2 是一个参数,因此它只对方法 isHigherThan 是本地的,这就解释了为什么您在文件的其他任何地方都看不到它。您正在查看的方法可能属于 Card 类型的类。调用该方法时,它首先检查纸牌的面值是否相等(皇后 == 皇后),然后比较花色(红心 vs 方块),如果 card2 的花色更高,则将返回值设置为 true . else 语句表示面值不匹配(Jack 和 Ace),因此如果 card2 的面值更高,则结果设置为 true。

    【讨论】:

      【解决方案3】:

      它在两种情况下返回true

      1. 给定Card 类的getFace 方法返回的值等于某个名为face 的全局变量,并且同一类实例的getSuit 方法返回的值小于名为suit 的全局变量。
      2. 给定Card 类的getFace 方法返回的值小于名为face 的全局变量。

      在任何其他情况下,返回值为false

      它的真正用途是比较Card 类的两个实例:它的isHigherThan 方法被调用的一个实例与其他实例。如果两张牌的牌面(编号)相同,则按花色进行比较 - 黑桃、红心、梅花或方块。

      【讨论】:

        【解决方案4】:

        isHigherThan (可能)是类卡的一个方法。如果调用它的 Card 对象的值高于作为参数给出的 Card,它显然返回 true。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-28
          • 2014-01-12
          • 1970-01-01
          • 2016-08-14
          • 1970-01-01
          • 2012-04-20
          相关资源
          最近更新 更多