[RESOLVIDO] Erro ao exibir array

Boa tarde.

Eu criei uma classe chamada Cards.

class Cards {
private String naipe, valor;
private boolean estado = false;

public Cards(int naipe, int valor){
switch (naipe){
case 0:
this.naipe = “Ouros”;
break;
case 1:
this.naipe = “Espadas”;
break;
case 2:
this.naipe = “Copas”;
break;
case 3:
this.naipe = “Paus”;
break;
default:
System.out.println(“Você deve ter ingerido tóxicos!”);

}
switch (valor){
  case 1:
  this.valor = "Às";
  break;
  case 11:
  this.valor = "Valete";
  break;
  case 12:
  this.valor = "Dama";
  break;
  case 13:
  this.valor = "Reis";
  break;
  default:
  this.valor = Integer.toString(valor);
}

}
public String showCard(){
String str = this.valor + " " + this.naipe;
return str;
}
}

Se eu instanciar um objeto (myCard) da classe Cards no main eu consigo usar System.out.println(myCard.ShowCard());

Aparece na tela o valor e o naipe da carta. Até aí normal.


Depois eu criei uma classe chamada Deck. Essa classe serve para criar 52 cartas únicas, 13 de cada naipe.

class Deck {

int id = 0;

Cards[] deck = new Cards[52];

public Deck(){
  
  for (int i=0; i<4; i++){
    for (int j=1; j<14; j++){
      Cards card = new Cards(i,j);
      deck[id] = card;
      id++;
    }
  }
}

}

Agora estou querendo testar o programa até essa parte. Para isso preciso exibir uma carta na tela.

Estou tentando fazer:

Deck myDeck = new Deck();
System.out.println(myDeck[3].ShowCard());

Mas o compilador diz que uma Array é esperada e está encontrando Deck.

Eu estou usando um compilador online.

Desculpem. Eu consegui achar o erro.

Eu estava tratando a instancia de Deck como se fosse o próprio array.

Porém na verdade meu array é um atributo de Deck, e não o próprio Deck.

Dessa forma eu fiz myDeck.deck[5].showCard(); dentro do println e deu certo.

Eu já estava a um tempo tentando encontrar o erro, por isso ia tentar ajuda por aqui.

Até mais!

1 curtida