2016-03-24 7 views
0

私は問題があるとの譲渡をしています。要点は、プログラムにブラックジャック値のカードをプリントアウトさせることです。実際にカードを一緒に追加する必要はありませんが、カードと値の名前を表示するだけです。Java 21カード1

エース、キング、クイーン、ジャックの後に数字が表示されてしまって困っています。私のコードは

import static java.lang.System.*; 
public class Card 
{ 
public static final String FACES[] = {"ZERO","ACE","TWO","THREE","FOUR", 
     "FIVE","SIX","SEVEN","EIGHT","NINE","TEN","JACK","QUEEN","KING"}; 

//instance variables 
private String suit; 
private int face; 

//constructors 
public Card(String s, int f) 
{ 
    suit = s; 
    face = f; 
} 

// modifiers 
public void setFace(int f) 
{ 
    face = f; 
} 

public void setSuit(String s) 
{ 
    suit = s; 
} 

//accessors 
public String getSuit() 
{ 
    return suit; 
} 

public int getFace() 
{ 
    return face; 
} 

//toString 
public String toString() 
{ 
    return FACES[face] + " of " + suit; 
} 
} 

import static java.lang.System.*; 
import java.awt.Color; 

public class CardRunner 
{ 
public static void main(String args[]) 
{ 
    Card one = new Card("SPADES", 9); 
    out.println(one.getSuit()); 
    out.println(one.getFace()); 

    Card two = new Card("DIAMONDS", 1); 
    out.println(two); 
    two.setFace(3); 
    out.println(two); 

    Card three = new Card("CLUBS", 4); 
    out.println(three); 

    Card four = new Card("SPADES", 1); 
    out.println(four); 

    Card five = new Card("HEARTS", 13); 
    out.println(five); 

    Card six = new Card("HEARTS", 11); 
    out.println(six); 

    Card seven = new Card("CLUBS", 12); 
    out.println(seven);  
} 
} 

である私は、私はそれは私たちが学んでいると割り当てのポイントはにあるものであるとして(S、F)スーパーに呼ぶようなメソッドを追加することを考えていましたスーパーへの呼び出しを使用します。私は数字を表示するのに問題があるだけです。

私の出力は、次のとおりです。私は必要

SPADES 
9 
ACE of DIAMONDS 
THREE of DIAMONDS 
FOUR of CLUBS 
ACE of SPADES 
KING of HEARTS 
JACK of HEARTS 
QUEEN of CLUBS 

出力は次のようになります。

SPADES 
9 
ACE of DIAMONDS 
THREE of DIAMONDS 
FOUR of CLUBS 
ACE of SPADES 11 
KING of HEARTS 10 
JACK of HEARTS 10 
QUEEN of CLUBS 10 
+0

「ZERO」はどのカードを表していますか? –

+0

'ACE of DIAMONDS'と他のカードが値を出力しないようにするには? –

+0

私は同じ質問をしましたが、先生と議論しませんでした。なぜ私たちは価値を必要としないのか分かりませんでしたが、私の先生が出力を希望するものを私たちに送ってくれました。 –

答えて

1

ちょうどカードの実際の値のために別の変数を格納します。

注:getFace()の代わりにgetValue()を実装して、カードの「適切な」値を返し、配列のインデックスは返しません。

//instance variables 
private String suit; 
private int face; 
private int value; 

//constructors 
public Card(String s, int f) 
{ 
    suit = s; 
    face = f; 
    value = f;    // This handles 2..10 
    if (f > 10) value = 10; // Face values are all 10 
    if (f == 1) value = 11; // Ace. Remove if 1 and 11 should be different 
} 

public String toString() 
{ 
    String s = FACES[face] + " of " + suit; 
    if (face > 10 || face == 1) { 
     s += " " + value; 
    } 
    return s; 
} 
関連する問題