我在制作二十一点游戏时遇到了学校任务的困难。 我们需要在界面中从面值应用分数值。我想通过编写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 :(得分:1)
只需致电Value.ordinal()
即可获得" postion"枚举中的值,你的情况下的值是多少。
编辑为Jack,Queen和King的值为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;
答案 1 :(得分:-1)
枚举是简单的常量。如果您不允许修改枚举,则必须使用其他数据结构(如某些键值对)维护关联值。