Criar um baralho

Continuando a discussão do Criar um baralho

Não estou conseguindo chamar o método imprimeBaralho() na Aplicação…

Não seria: Baralho.imprimeBaralho();

segue o código…

public class Carta {

private String nome;
private String naipe;
	
public Carta(String nome, String naipe) {		
	this.nome = nome;
	this.naipe = naipe;
}
	
public String getNome() {
    return nome;
}

public String getNaipe() {
    return naipe;
}

}

public class Baralho {

int quantidade = 70; 
private Carta cartas[];

public Baralho() {

	String nomes[] = {"Às", "Dois", "Três", "Quatro", "Cinco", "Seis", "Sete", "Oito", "Nove", "Dez", "Valete", "Dama", "Rei"};
	String naipes[] = {"Copas", "Espadas", "Paus", "Ouros"};
	int cont = 0;
	
	for (int j = 0; j < naipes.length; j++) {
		for (int i = 0; i < nomes.length ; i++) {
			cartas[cont] = new Carta(nomes[i], naipes[j]);
			cont++;
		}
	}
}

//Embaralha cartas

public void embaralha( ) {

	for (int i=0 ; i < quantidade; i++) {
		Carta aux = cartas[i];
		int proxima = (int)(Math.random() * quantidade);
		cartas[i] = cartas[proxima];
		cartas[proxima] = aux;
	}

}

public void imprimeBaralho() {

     System.out.println(cartas[0]);

}

}

public class Aplicacao {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	
    Baralho.imprimeBaralho();
}

}

Não, você precisa criar um objeto da classe Baralho e então chamar o método a partir do objeto.

public static void main(String[] args) {
    Baralho meuObjeto = new Baralho();
    meuObjeto.imprimeBaralho();
}

Entendi!

Muito obrigado!

1 curtida

No seu caso, você pode fazer assim pra verificar se sua implementação está OK:

    Baralho meuObjeto = new Baralho();
    meuObjeto.imprimeBaralho();  // imprime antes de embaralhar
    meuObjeto.embaralha();       // embaralha as cartas
    meuObjeto.imprimeBaralho();  // imprime depois de embaralhar

Sabe dizer que erro existe na linha 17, não estou vendo…

int quantidade = 70;
private Carta cartas[];
cartas = new Carta[quantidade];

public Baralho() {

	String nomes[] = {"Às", "Dois", "Três", "Quatro", "Cinco", "Seis", "Sete", "Oito", "Nove", "Dez", "Valete", "Dama", "Rei"};
	String naipes[] = {"Copas", "Espadas", "Paus", "Ouros"};
	int cont = 0;
	
	for (int j = 0; j < naipes.length; j++) {
		for (int i = 0; i < nomes.length ; i++) {
			System.out.println( i);
		->	cartas[cont] = new Carta(nomes[i], naipes[j]);
		//	System.out.println( cartas[i]);
			cont++;
			
		}
	}
}

//Embaralha cartas

public void embaralha( ) {

	for (int i=0 ; i < quantidade; i++) {
		Carta aux = cartas[i];
		int proxima = (int)(Math.random() * quantidade);
		cartas[i] = cartas[proxima];
		cartas[proxima] = aux;
	}

}

public void imprimeBaralho() {

    // System.out.println(cartas[0]);

}

}
O erro que está dando é o seguinte:
Exception in thread “main” java.lang.Error: Unresolved compilation problem:
Syntax error on token “;”, , expected

at Baralho.<init>(Baralho.java:5)
at Aplicacao.main(Aplicacao.java:6)

Descobri onde estava o erro, mas os dados não estão escritos corretamente.
Está saindo:
Carta@2f92e0f4
Carta@28a418fc
Carta@5305068a
Carta@1f32e575
Carta@279f2327
Carta@2ff4acd0
Carta@54bedef2
Carta@5caf905d
Carta@27716f4
Carta@8efb846
Carta@2a84aee7
Carta@a09ee92
Carta@30f39991
Carta@2f92e0f4
Carta@28a418fc
Carta@5305068a
Carta@1f32e575
Carta@279f2327
Carta@2ff4acd0
Carta@54bedef2
Carta@5caf905d
Carta@27716f4
Carta@8efb846
Carta@2a84aee7
Carta@a09ee92
Carta@30f39991
Carta@2f92e0f4
Carta@28a418fc
Carta@5305068a
Carta@1f32e575
Carta@279f2327
Carta@2ff4acd0
Carta@54bedef2
Carta@5caf905d
Carta@27716f4
Carta@8efb846
Carta@2a84aee7
Carta@a09ee92
Carta@30f39991
Carta@2f92e0f4
Carta@28a418fc
Carta@5305068a
Carta@1f32e575
Carta@279f2327
Carta@2ff4acd0
Carta@54bedef2
Carta@5caf905d
Carta@27716f4
Carta@8efb846
Carta@2a84aee7
Carta@a09ee92
Carta@30f39991

Você está imprimindo o toString() da classe Carta.
Ou você sobrescreve o método toString() pra trazer a informação que você quer ou você manda imprimir exatamente o que quer, exemplo:

System.out.println(cartas[i].getNome() + " - " + cartas[i].getNaipe());

Entendi!
Obrigado, agora finalmente consigo fazer as outras funções do programa…