布尔方法混淆

时间:2011-06-20 21:16:07

标签: java methods boolean

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

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; 
}

由于

4 个答案:

答案 0 :(得分:3)

您的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()比较时,它们基本上将card1 facecard2 face进行比较。

答案 1 :(得分:1)

card2是一个参数,因此它只是方法isHigherThan的本地参数,这解释了为什么你在文件中的任何其他位置都看不到它。您正在查看的方法可能属于Card类。当调用该方法时,它首先检查卡片的面值以查看它们是否相等(queen == queen)然后比较套装(心脏与钻石)并如果card2的套装则将返回值设置为true更高。 else语句表示面值不匹配(Jack& Ace),因此如果card2具有更高的面值,则结果将设置为true。

答案 2 :(得分:1)

它在两种情况下返回true

  1. 给定getFace类的方法Card返回的值等于某个名为face的全局变量,并且同一类实例的方法getSuit返回的值更小而不是名为suit的全局变量。
  2. 给定getFace类的方法Card返回的值小于名为face的全局变量。
  3. 在任何其他情况下,返回值将为false

    实际使用它是比较Card类的两个实例:与其他实例调用其isHigherThan方法的实例。如果两张牌都有相同的面孔(数字),那么他们就会通过套装进行比较 - 黑桃,红心,俱乐部或钻石。

答案 3 :(得分:0)

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