2017-03-10 10 views
0

私はこのコードを調べていますが、見えないものは見つかりません。私はプログラミングに慣れていないので、明らかに何かが不足しているかもしれませんが、何か助けていただければ幸いです。私が取り組んでいる課題は、52枚のカードデッキを作成してデッキを変更する方法を設計することです。カードは作成されていますが、ArrayListに追加されていません。デッキクラスのための私のコードは次のとおりです。ArrayListはメソッドをコンパイルしていますが、動作していません

public class FiftyTwoCardDeckTester 
{ 
    public static void main(String args[]) 
    { 
     FiftyTwoCardDeck deck = new FiftyTwoCardDeck(); 
    } 
} 

とデッキのためのオブジェクトを作るカードクラスされています:テスタークラスは、単にオブジェクトを作成

import java.util.*; 
public class FiftyTwoCardDeck 
{ 
List<Card> totalDeck = new ArrayList<>(); 

private int deckSize = totalDeck.size(); 

public FiftyTwoCardDeck() 
{ 
    for(int j=0;j<4;j++) { 
     for(int k=0;k<13;k++) { 
      String s; 
      String c; 

      switch(j) { 
       case 0: 
       s = "Spades"; 
       break; 

       case 1: 
       s = "Diamonds"; 
       break; 

       case 2: 
       s = "Clubs"; 
       break; 

       case 3: 
       s = "Hearts"; 
       break; 
      } 

      switch(k) { 
       case 0: 
       c = "Ace"; 
       break; 

       case 10: 
       c = "Jack"; 
       break; 

       case 11: 
       c = "Queen"; 
       break; 

       case 12: 
       c = "King"; 
       break; 

       default: 
       c = ""+(k+1); 
       break; 
      } 

      Card card = new Card(s, c); 
      totalDeck.add(card); 
     } 
    } 
} 

    public int cardAmount() 
    { 
     return deckSize; 
    } 
} 

import java.util.*; 
public class Card 
{ 
    public Card(String st, String ct) 
    { 
     suit = st; 
     count = ct; 
    } 

    public String getSuit() 
    { 
     return suit; 
    } 

    public String getCount() 
    { 
     return count; 
    } 

    public String suit; 
    public String count; 
} 
+1

あなたdeckSizeは常にゼロです。 'cardAmount'メソッドで' totalDeck.size() 'を返すべきです – mertsimsek

+1

言語を学ぶのを助けるために、ブレークポイントと通常のデバッガを通して言語をデバッグする方法を学ばなければなりません。この記事の内容を確認してください:http://www.vogella.com/tutorials/EclipseDebugging/article.html – DogEatDog

+0

皆さん、助けてくれてありがとう、とても感謝しています。私はデバッグリンクDogEatDogをチェックアウトします –

答えて

2
private int deckSize = totalDeck.size(); 

public int cardAmount() 
{ 
    return deckSize; 
} 

FiftyTwoCardDeckオブジェクトを作成すると、deckSizeが初期化されます。コンストラクタが実行され、更新される前に0に設定されます。カードがデッキに追加されたら、それを更新する必要があります。

または変数を削除し、cardAmount()に呼び出されるたびにどれくらい大きいかを質問してください。

public int cardAmount() 
{ 
    return totalDeck.size(); 
} 
0

これは問題です。

private int deckSize = totalDeck.size(); 

このフィールドは、コンストラクタ本体が実行される前に初期化されます。説明についてはこの回答を参照してください:https://stackoverflow.com/a/14806340/342852

0

実際にあなたのListdeckSizeFiftyTwoCardDeckの作成時0にintiatedされているのでしかしcardAmount()は常に0を返しますCardsで膨張されています。

使用この代わりに:

public int cardAmount() 
{ 
    return totalDeck.size() 
} 
関連する問題