2011-06-20 140 views
1

你好那裏的程序員。有人可以向我解釋這段代碼到底做了什麼嗎?起跑的方法讓我有點失望(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; 
} 

感謝

+0

什麼部分完全不瞭解? card2來自哪裏?這只是傳入的方法參數。 – BalusC

+0

getFace()方法返回什麼類型? –

回答

3

也許,你isHigherThan方法在Card類至少具有以下性質implementd: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

0

isHigherThan(可能)是類卡的一種方法。如果它被調用的Card對象的值高於作爲參數給定的Card,它顯然會返回true。

1

card2是一個參數,所以它只在方法isHigherThan的本地,這就解釋了爲什麼你不在文件的其他任何地方看到它。您正在查看的方法可能屬於一類卡片。當該方法被調用時,它首先檢查卡片的面值以查看它們是否相等(皇后==皇后),然後比較套裝(心臟vs鑽石)並且如果card2的套裝更高則將返回值設置爲真。 else語句表示面值不匹配(Jack & Ace),所以如果card2具有較高的面值,則結果設置爲true。

1

它返回true在兩種情況下:

  1. 的方法給定Card類返回的getFace價值等於有的叫face全局變量和相同的類實例的也是方法getSuit正在返回值比全球小名爲suit的變量。
  2. 給定的Card類的方法getFace返回值小於全局變量face

在任何其他情況下,返回值將是false

這樣做的實際用途是比較Card類的兩個實例:它的isHigherThan方法與其他實例一起調用的實例。如果兩張牌具有相同的面孔(數字),則將其與西裝 - 黑桃,紅心,棍棒或鑽石進行比較。