在Java中创建一个对象数组的实例

时间:2014-04-20 22:48:43

标签: java arrays class initialization instance

我是Java的新手,当我尝试创建DeckofCards类的实例时,我在main函数中出现错误。 DeckofCards类应该是一个私人数组" Cards"对象。我认为我的问题出现在DeckofCards类中,出于某种原因,我认为它不是一个数组?也许我创造了它错了?

我的主要错误是 '('或' ['预期 和 需要数组,但发现DeckofCards

这是我的主要功能:

public static void main(String[] args) {

        Card myCard = new Card(13,1);
        System.out.println(myCard.getSuit());
        System.out.println(myCard);
        DeckofCards myDeck = new DeckofCards;  //error here
        for(int i=0; i<53; i++) {
            System.out.println(myDeck[i]); //second error here
        }
    }

这是我的DeckofCards课程:

public class DeckofCards {

    private Card[] deck = new Card[52];

    public DeckofCards(){
        int i = 0;

            for(int s = 1; s<5; s++){
                for(int r = 1; r<14; r++){
            deck[i].rank = r;
            deck[i].suit = s;
            i++;

    }
}
    }
}

如果有人能告诉我,我是否遗漏了某些语法或某些非常棒的东西!谢谢。

4 个答案:

答案 0 :(得分:5)

你需要调用构造函数:

DeckofCards myDeck = new DeckofCards(); // note parens!

在Java中,括号是必需的。

在构造函数中,您还需要将数组的每个元素初始化为新的Card对象:

for(int s = 1; s<5; s++){
    for(int r = 1; r<14; r++){
        deck[i] = new Card();
        deck[i].rank = r;
        deck[i].suit = s;
        i++;

答案 1 :(得分:3)

错误很明显,myDeck是一个自定义Object而非数组

DeckofCards myDeck = new DeckofCards();  // parenthesis here
for (int i=0; i<53; i++) {
    System.out.println(myDeck); // no brackets here
}

虽然循环本身应该位于toString类的DeckofCards方法中。

答案 2 :(得分:3)

替换

DeckofCards myDeck = new DeckofCards;

DeckofCards myDeck = new DeckofCards();

并且myDeck从未初始化为数组。

答案 3 :(得分:1)

为了遍历DeckofCards,您将要公开该私有Card []数组。您可以使用bean表示法getCards()或仅将数组设为公共。

    public class DeckofCards {

        private Card[] deck = new Card[52];

        public DeckofCards(){
            int i = 0;

                for(int s = 1; s<5; s++){
                    for(int r = 1; r<14; r++){
                deck[i].rank = r;
                deck[i].suit = s;
                i++;

        }
      } 
    }
     public Card[] getCards(){

          return deck;

     }
   }

我可能只是让甲板公开。