2017-04-18 51 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

枚舉很簡單的常量。如果您不允許修改枚舉,那麼您必須使用其他數據結構維護關聯值,例如某些鍵值對。