2017-04-18 53 views
0

我在创建二十一点游戏时遇到了难度。 我们需要在界面中的面值中应用分数值。我想通过编写Ace(1),Two(2)...直接修改枚举,但我们不允许修改接口。有没有其他方法可以应用这个值?在接口的枚举中设置一个类的值

public interface PlayingCard 

public enum Value 
{ 
    Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King 
}; 

public class PlayingCardImp implements PlayingCard { 

    private Suit suit; 
    private Value value; 

    public PlayingCardImp (Value value, Suit suit) 
     { 
     this.value = value; 
     this.suit = suit; 
     } 

    @Override 
    public int getScore() 
    { 
    @return the score value of this card (Ace=1, J, Q, K=10, All others int of face value) 
     return 0; 
    } 
} 
+0

您还可以使用Map作为Map 来创建枚举值和卡片值之间的关系。 (尽管它可能不是最好的方法) – SomeJavaGuy

+0

一种简单的方法是在枚举值上进行切换并确定返回的情况。 –

+0

下一次请提供[mcve] – Jens

回答

1

只要打电话Value.ordinal(),你会得到枚举值“现在的位置”,什么是你的情况的值。

编辑具有值10为杰克,女王和国王使用:

public int getScore() 
    if (value == Value.Ace) 
     return 1; 
    if (value == Value.Jack && value == Value.Queen && value == Value.King) 
     return 10; 

    return value.ordinal()+1; 
+0

@OHGODSPIDERS谢谢我监督它。查看我的更新回答 – Jens

+0

@StefanWarminski或terny Operator。但特别是初学者提供的解决方案更容易理解 – Jens

+0

@Jake查看我编辑的答案 – Jens

-1

枚举很简单的常量。如果您不允许修改枚举,那么您必须使用其他数据结构维护关联值,例如某些键值对。