哪个更适合静态数据 - 最终的char或enum?

sil*_*rzx 2 java poker int enums char

关于我的扑克Java计划,选择枚举超过字符和整数是明智的决定吗?

据我所知,为char分配一个单独的整数值有一个好处,就是在比较卡值来决定胜利者时,应用数学运算符的简易性.然而,这可能是枚举,如果是这样我不知道.

请有人向我解释每个的adv/disadv吗?

我宣布卡排名的第一个选择是枚举:

public enum Rank { 
     DEUCE (1), 
     THREE (2), 
     FOUR (3), 
     FIVE (4), 
     SIX (5),     
     SEVEN (6), 
     EIGHT (7), 
     NINE (8), 
     TEN (9), 
     JACK (10), 
     QUEEN (11), 
     KING (12), 
     ACE (13)
}

public enum Suit { 
     CLUBS (1), 
     DIAMONDS (2), 
     HEARTS (3), 
     SPADES (4) 
}
Run Code Online (Sandbox Code Playgroud)

我的第二个选项是静态最终字符,分配的int值如下:

       public static final char ACE =   'A';
       public static final char TWO =   '2';
       public static final char THREE = '3';
       public static final char FOUR =  '4';
       public static final char FIVE =  '5';
       public static final char SIX =   '6';
       public static final char SEVEN = '7';
       public static final char EIGHT = '8';
       public static final char NINE =  '9';
       public static final char TEN =   'T';
       public static final char JACK =  'J';
       public static final char QUEEN = 'Q';
       public static final char KING =  'K';

         public Rank (char c)
         {
             switch (c)
             {
             case TWO:
                 _val = 0;
                 break;
             case THREE:
                 _val = 1;
                 break;
             case FOUR: 
                 _val = 2;
                 break;
             case FIVE: 
                 _val = 3;
                 break;
             case SIX:
                 _val = 4;
                 break;
             case SEVEN:
                 _val = 5;
                 break;
             case EIGHT:
                 _val = 6;
                 break;
             case NINE: 
                 _val = 7;
                 break;
             case 'T':
                 _val = 8;
                 break;
             case 'J':  
                 _val = 9;
                 break;
             case 'Q':
                 _val = 10;
                 break;
             case 'K': 
                 _val = 11;
                 break;
             case 'A':
                 _val = 12;
                 break;
             default:
                 _val = -1;
             }
         }
Run Code Online (Sandbox Code Playgroud)

谢谢!

MrS*_*h42 5

我更喜欢Enum.代码看起来更干净,IDE可以帮助您避免在switch语句中遗漏案例.