Los errores me los da en el metodo shuffle.
Saludos.
Código
public class Deck { public Card[]deck; public int c, i; //Método constructor public Deck() { deck = new Card [Card.Suits.length*Card.Values.length]; c = 0; //Rellenar los huecos del array for(int s: Card.Suits) { for(int v: Card.Values) { deck[c] = new Card(v,s); c++; } } } public boolean areCardsLeftToDeal() { if (c<Card.Suits.length*Card.Values.length) return true; else return false; } public Card dealCard() { this.robada = this.deck.remove(0); return this.robada; public void shuffle() { for ( int i = 51; i > 0; i-- ) { Card n = deck[i]; deck[i] = deck[rand]; deck[rand] = n; } } } }