tengo cubierta de clase
import java.util.Random; public class Deck implements DeckActions{ private static Card[] cards=new Card[52]; public Deck () { int i=0; for (Suit suit : Suit.values()){ for (Rank rank : Rank.values()){ cards[i++]=new Card(rank,suit); } } } public Card draw() { return cards[0]; } public void shift(int times) { Random randomGenerator=new Random(); int card1=randomGenerator.nextInt(52); int card2=randomGenerator.nextInt(52); for (int counter=0;counter < times; counter++){ Card temp=new Card(null,null); temp=cards[card1]; cards[card1]=cards[card2]; cards[card2]=temp; } } public void show() { for (int i=0;i<cards.length;i++){ System.out.println(cards[i].toString()); } } }que implementa la interfaz
public interface DeckActions { public Card draw(); public void shift(int times); public void show(); }el problema que tengo es que el método Shift en realidad no cambia la matriz de la plataforma. ¿Qué me estoy perdiendo? Realmente no puedo entender.
Esta es mi clase principal, traté de llamar al método con un int como 100 o 52, pero show siempre muestra la misma matriz
public class TestCard { public static void main (String [] args) { Deck deck=new Deck(); deck.show(); deck.shift(52); System.out.println("Shifted"); deck.show(); } }El problema es que las líneas que generan índices aleatorios de tarjetas para intercambiar están fuera del bucle, por lo que siempre intercambia las mismas 2 tarjetas. Tratar:
public void shift(int times) { Random randomGenerator=new Random(); for (int counter=0;counter < times; counter++){ int card1=randomGenerator.nextInt(52); int card2=randomGenerator.nextInt(52); Card temp=new Card(null,null); temp=cards[card1]; cards[card1]=cards[card2]; cards[card2]=temp; } }PD: ¿algún motivo para que las tarjetas de campo sean estáticas?