java - 哪个更适合静态数据 - final char 还是 enum?

标签 java enums char int poker

关于我的 Poker 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) 
}

我的第二个选择是像这样分配 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;
             }
         }

谢谢!

最佳答案

我更喜欢枚举。代码看起来更简洁,IDE 可以帮助您避免遗漏 switch 语句中的 case。

关于java - 哪个更适合静态数据 - final char 还是 enum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14246010/

相关文章:

java - 加载数据 INFILE MYSQL 错误

java - 将 int[][] 转换为 String

c - 以 '\' 开头并后跟数字(例如 '\234')的字符是什么意思?

c - 在 C 中初始化字符串的正确方法

C题: why char actually occupies 4 bytes in memory?

java - 为TextView中的文本添加不同的监听器

java - "Java Expiration Date"处/之后发生了什么?

Python 一行获取枚举类列表的所有值的组合列表

java - Java 中枚举类型实例变量的默认值是多少?

c++ - 枚举类型作为soapcpp2中的返回值