La création d'une instance d'un tableau d'objets de la classe en Java
Je suis nouveau sur Java, et j'obtiens une erreur dans ma fonction principale lorsque j'essaie de créer une instance d'un DeckofCards classe. Le DeckofCards classe qui est censé être privé de tableau de "Cartes" objets. Je pense que ma question est quelque chose dans le DeckofCards classe, pour une raison quelconque, il n'est pas un tableau, je pense? Peut-être que j'ai créé il de mal?
Les erreurs dans ma main sont
'(' ou '[' attend
et
tableau requis mais DeckofCards trouvé
Voici ma fonction principale:
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
}
}
Voici mon DeckofCards classe:
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++;
}
}
}
}
Si quelqu'un peut me dire si je suis pas certains de la syntaxe ou de quelque chose, ce serait sympa! Merci.
- "pour une raison quelconque, il n'est pas un tableau, je pense" - eh Bien, vous serez frappé le clou sur la tête. Utiliser des méthodes pour interagir avec le
Card
tableau dans votre deck classe. - Au lieu de
new DeckofCards
utilisationnew DeckofCards()
- Remarque: pour construire un objet (ou réellement définir ses paramètres), vous devez appeler un constructeur. Un constructeur est une méthode de classe (même si vous n'écrivez pas votre propre constructeur explicitement, Java fournir un constructeur par défaut de la classe.) Maintenant, vous avez réellement écrit votre constructeur (
public DeckOfCards()
) dans votre classe, et à voir: c'est une méthode. Pour appeler une méthode en Java, vous devez tapermethodName(arguments)
. Les parenthèses sont obligatoires et les arguments ne sont pas (par exemple, le constructeur que vous avez écrit ne prend pas d'arguments). - Quelqu'un peut m'expliquer pourquoi le Système.out.println(myDeck[i]) renvoie une erreur? Système.out.println(myCard) retourne la carte ("As de Pique" par exemple) et n'est pas myDeck[i] juste une carte?
Vous devez vous connecter pour publier un commentaire.
Vous devez appeler le constructeur:
En Java, les parenthèses sont obligatoires.
Dans le constructeur, vous aurez également besoin d'initialiser chaque élément du tableau pour un nouveau
Card
objet:myDeck
n'est pas un tableau, de sorte que vous ne pouvez pas accéder à des parties de lui à l'aide des indices de tableaux. Si vous souhaitez imprimer la i-ème de la carte dans le jeu, vous aurez besoin d'une méthode de lecture dansDeckofCards
(par exemple:public Card getCard(int i) { return deck[i]; }
). Alors vous pourriez essayerSystem.out.println(myDeck.get(i));
.Remplacer
avec
et
myDeck
a jamais été initialisé à un tableau.L'erreur est assez clair,
myDeck
est un seul personnaliséObject
plutôt qu'un tableauBien que la boucle elle-même doit être situé à l'intérieur de la
toString
méthode de laDeckofCards
classe.Pour itérer sur les DeckofCards vous voudrez exposer que des Cartes privées tableau []. Vous pouvez utiliser la fève de notation getCards() ou tout simplement faire le tableau public.
Je serais probablement juste de faire le pont public.