差异方法java使用枚举类型

我想写一个方法,可以返回2张卡的价值差异。 我很困惑,因为我正在学习枚举,并且不确定实现它的最有效方法。

public class Card implements Comparable { public enum Rank {TWO, THREE, FOUR, FIVE, SIX,SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE} public enum Suit {CLUBS, DIAMONDS, HEARTS, SPADES} public static int difference(Card c){ } 

任何帮助或指导将不胜感激。

 public enum Rank {ACE(1), TWO(2); /* obviously add the other values*/ private int value ; Rank(int value){ this.value = value; }; public int getValue(){ return this.value; } public int calcDifference(Rank rank){ return getValue() - rank.getValue(); } }; 

然后可以这样调用:

 Rank rankAce = Rank.ACE; System.out.println(rankAce.calcDifference(Rank.TWO)); 

您可以删除int值并只使用序数,但这种方式可以为您提供一些灵活性。

定义卡片价值的最简单方法是将套装的十三倍加到等级中,或者将四倍的等级添加到套装中:

 public int faceValue(Card c) { return 13*c.getSuit().ordinal()+c.getRank().ordinal(); } 

要么

 public int faceValue(Card c) { return 4*c.getRank().ordinal()+c.getSuit().ordinal(); } 

两种方式都产生从051数字,包括051

有了faceValue ,您可以按如下方式定义差异函数:

 public static int faceValueDifference(Card left, Card right){ return left.faceValue()-right.faceValue(); }