Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating an instance of an array of objects class in Java

I'm new to Java, and I'm getting an error in my main function when I try to create an instance of a DeckofCards class. The DeckofCards class is supposed to be a private array of "Cards" objects. I think my issue is something in the DeckofCards class, for some reason it's not an array I think? Maybe I created it wrong?

The errors in my main are '(' or '[' expected and array required but DeckofCards found

Here is my main function:

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
        }
    }

Here is my DeckofCards class:

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++;

    }
}
    }
}

If anyone can tell me if I'm missing some syntax or something that'd be great! Thank you.

like image 617
singmotor Avatar asked Jul 22 '26 15:07

singmotor


2 Answers

You need to call the constructor:

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

In Java, the parentheses are required.

In the constructor, you will also need to initialize each element of the array to a new Card object:

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++;
like image 127
Ted Hopp Avatar answered Jul 25 '26 06:07

Ted Hopp


Replace

DeckofCards myDeck = new DeckofCards;

with

DeckofCards myDeck = new DeckofCards();

and myDeck was never initialized to be an array.

like image 34
TNT Avatar answered Jul 25 '26 04:07

TNT