2017-04-18 21 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 'のマップを使用して、enum値とcards値の間の並べ替えを作成することもできます。 (最高の方法ではないかもしれませんが) – SomeJavaGuy

+0

簡単な方法の1つは、列挙型の値を切り替えてそこでのリターンケースを破棄することです。 –

+0

次回は[mcve] – Jens

答えて

1

だけValue.ordinal()を呼び出して、あなたが列挙の値の「postion」を得る、あなたの場合の値は何ですか。

EDITジャック、女王のために値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オペレータを参照してください。しかし、初心者のために特別に提供されたソリューションはより理解可能です – Jens

+0

@ジェイク私の編集された答えを参照してください – Jens

-1

列挙型は、単純な定数です。列挙型を変更できない場合は、関連する値をいくつかのキーと値のペアのような追加のデータ構造で維持する必要があります。

関連する問題