Путаница с булевым методом - PullRequest
1 голос
/ 21 июня 2011

Здравствуйте, коллеги-программисты.Может кто-нибудь объяснить мне, что именно делает этот кусок кода?Метод запуска немного сбивает меня с толку (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; 
}

Спасибо

Ответы [ 4 ]

3 голосов
/ 21 июня 2011

Вероятно, ваш метод isHigherThan реализован в классе Card, который имеет как минимум следующие свойства: face и suit.

Этот метод можно использовать следующим образом:

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

boolean res = card1.isHigherThan(card2);

Теперь, когда вы видите только face или suit внутри вашего метода, это свойство имеет значение card1.Поэтому, когда такое сравнение face == card2.getFace() сделано, они в основном сравнивают card1 face с card2 face.

1 голос
/ 21 июня 2011

Возвращается true в двух случаях:

  1. Метод getFace данного класса Card возвращает значение, равное некоторой глобальной переменной с именем face, а также метод getSuit того же экземпляра класса возвращает значение, меньшее глобальной переменной с именем suit.
  2. Метод getFace данного класса Card возвращает значение меньше глобальной переменной, называемой face.

В любом другом случае возвращаемое значение будет false.

Реальное использование этого - сравнение двух экземпляров класса Card: того, который вызывается его isHigherThan, с другим экземпляром. Если обе карты имеют одно и то же лицо (число), то они сравниваются по масти - пики, червы, трефы или алмазы.

1 голос
/ 21 июня 2011

card2 является параметром, поэтому он является локальным для метода isHigherThan, и это объясняет, почему вы не видите его где-либо еще в файле.Метод, который вы просматриваете, вероятно, принадлежит к классу типа Card.Когда метод вызывается, он сначала проверяет номинальную стоимость карт, чтобы увидеть, равны ли они (queen == queen), затем сравнивает масть (сердца против алмазов) и устанавливает значение возврата в true, если масть card2 выше,Оператор else означает, что номинальные значения не совпадают (Jack & Ace), поэтому, если card2 имеет более высокое номинальное значение, результат устанавливается в значение true.

0 голосов
/ 21 июня 2011

isHigherThan (вероятно) метод карты класса.Очевидно, он возвращает true, если объект Card, для которого он вызывается, имеет значение выше, чем Card, заданная в качестве параметра.

...