Não, ele dá um erro dizendo que o método shuffle não aceita um array de Baralho.
O método shuffle espera receber um List.
Se você não puder utilizar List então você pode implementar um método para embaralhar um array, conforme o exemplo abaixo:
public static int[] shuffleArray(int[] array) {
Random random = new Random();
int quantidade = array.length;
for (int i = 0; i < quantidade; i++) {
int posicao = random.nextInt(quantidade);
int troca = array[i];
array[i] = array[posicao];
array[posicao] = troca;
}
return array;
}
Uma das coisas que está me confundindo é que estou abstraindo um baralho. Então imaginei o baralho como uma coleção de cartas. Logo, baralho tem que ser uma estrutura de dados que vai receber 52 elementos do tipo Carta.
Depois eu preciso embaralhar esse baralho.
Por fim eu preciso exibir o baralho embaralhado.
Eu já consegui criar as cartas e criar o baralho.
Falta embaralhar e mostrar.
Tô me confundindo com o tipo Carta. Por enquanto meu baralho é uma array simples. Acho que array não serve pra esse problema.
Serve sim, ao invés de fazer um array de int, você fará um array de Carta.
Basta alterar o código do método shuffleArray para ser assim:
public static Carta[] shuffleArray(Carta[] array) {
Random random = new Random();
int quantidade = array.length;
for (int i = 0; i < quantidade; i++) {
int posicao = random.nextInt(quantidade);
Carta troca = array[i];
array[i] = array[posicao];
array[posicao] = troca;
}
return array;
}
Eu li ontem de madrugada sua sugestão e não havia entendido. Mas devia ser o sono! Eu li novamente e agora entendi. Eu só não tenho como testar agora porque estou no trabalho.
Eu quero checar se o baralho não vai ter cartas repetidas. Quando eu estava em casa bolando uma forma de fazer usando o Random eu imaginei um possível problema: Random gera números aleatórios, porém não garante que não se repitam. Aí pensei que poderia gerar um baralho com cartas repetidas.
Se usando Random não ficar legal vou mudar para uma List. Assim posso usar o método Shuffle.