2016-04-11 31 views
0

只是想問問如何比較兩個對象的枚舉指數:比較兩個對象的枚舉的指數,計算哪些是較高和較低

  enum Face {ACE,TWO,THREE,FOUR,FIVE} 
      static final Face[] FACES = Face.values(); 

      static final Random RAND = new Random(); 
      public static Red_Dog random() 
       { 
        return new Red_Dog(SUITS[RAND.nextInt(SUITS.length)], 
             FACES[RAND.nextInt(FACES.length)]); 
       } 
      public static void main(String[] args) 
       { 
       Scanner input = new Scanner(System.in); 
       Red_Dog c1 = Red_Dog.random(); 
       Red_Dog c2 = Red_Dog.random(); 
       while(c1.equals(c2)) 
        { 
         c1 = Red_Dog.random(); 
         c2 = Red_Dog.random(); 
        } 
       System.out.println("First card: "+c1 + " Second card: " + c2); 


       Result: First card: FIVE Second card: TWO 

我想比較第一卡(C1 - 第一對象)和第二張卡片(c2 - 第二個物件)。我需要使用哪些方法?

+0

@ManoDestra枚舉值可與'equals'或''==等效進行比較。 'equals'方法是'final',並使用身份比較。 –

+0

是的,我知道這一點。但這個問題仍然涉及同樣的問題。 – ManoDestra

+0

@ManoDestra不是真的。平等告訴你卡片是平等的或不平等的;問題是詢問哪張卡片更高。 –

回答

0

您可以使用序()方法獲取枚舉的索引。因此,通過檢查c1.ordinal()== c2.ordinla(),您可以檢查它們的索引是相等的。但是,如果你要檢查枚舉的平等,你可以只檢查與==,無需索引的檢查。

這裏是一個信息約ordinal

+0

我強烈建議您閱讀*有效的Java第二版,第31條*:「使用實例字段,而不是序」,以及支付理會本聲明鏈接Javadoc文檔['Enum.ordinal()'](HTTPS ://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html#ordinal()):「大多數程序員不會使用此方法它被設計用於複雜的enum-使用。基於數據結構,如EnumSet和EnumMap。「。 –