2011-12-25 21 views
-1

私が書いた小さなプログラムをコンパイルしようとすると、カードのデッキの配列が作成されて印刷されますが、6つのエラーが表示され、「シンボルが見つかりません」というエラーが表示されます。誰かが私のコードをチェックして、間違いを見つけられますか?ありがとう。Java:シンボルが見つかりませんか?

コンパイル出力:

[email protected] ~/deck $ javac doDeck.java Deck.java Card.java 
doDeck.java:7: cannot find symbol 
symbol : variable deck 
location: class carddeck.Deck 
     System.out.println(mydeck.deck[x].getRankString() + " of " + mydeck.deck[x].getSuitString()); 
           ^
doDeck.java:7: cannot find symbol 
symbol : variable deck 
location: class carddeck.Deck 
     System.out.println(mydeck.deck[x].getRankString() + " of " + mydeck.deck[x].getSuitString()); 
                     ^
Deck.java:4: cannot find symbol 
symbol : variable deck 
location: class carddeck.Deck 
    deck = new Card[51]; 
    ^
Deck.java:10: cannot find symbol 
symbol : variable deck 
location: class carddeck.Deck 
      this.deck[cardcount] = new Card(suitit,rankit); 
       ^
Deck.java:10: cannot find symbol 
symbol : variable cardcount 
location: class carddeck.Deck 
      this.deck[cardcount] = new Card(suitit,rankit); 
        ^
Deck.java:11: cannot find symbol 
symbol : variable cardcount 
location: class carddeck.Deck 
        cardcount++; 
        ^
6 errors 

Deck.java:あなたのクラスで何のプロパティdeckをaveのない

package carddeck; 
class Deck { 
    public Deck() { 
     deck = new Card[51]; 
     int cardcount = 0; 
    } 
    public void buildDeck() { 
     for (Card.Rank rankit: Card.Rank.values()) { 
      for (Card.Suit suitit: Card.Suit.values()) { 
       this.deck[cardcount] = new Card(suitit,rankit); 
       cardcount++; 
      }; 
     }; 
    }; 
} 
+3

あなたは 'deck'メンバ変数を宣言していません。 – Mat

+0

cardcountもフィールドではありません。 – Zelldon

+0

[シンボルが見つかりません]というコンパイルエラーの意味は何ですか?](http://stackoverflow.com/questions/25706216/what-does-a-cannot-find-symbol-compilation-error-mean) – Raedwald

答えて

1

は、そのようにそれを追加してみてください:

class Deck { 
    private Card[] deck = null; 
    public Deck() { 
     deck = new Card[51]; 
     int cardcount = 0; 
    } 
//... 
} 
+0

ありがとうございました。私はコンストラクタ内の変数を初期化できなかったことを知りませんでした。 –

+0

もちろん、コンストラクタ内の変数を初期化することはできますが、まずそれらの変数を宣言する必要があります。変数を宣言するのを忘れた。 – Jesper

1

をどのようにしていますアクセスデッキ、それは定義されていません。

class Deck { 

Card deck; 
int cardcount; 
public Deck() { 

    deck = new Card[51]; 
    cardcount = 0; 
} 

.....