Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

147
Vistas
Modificar matriz con un método de la misma clase

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(); } }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

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?

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda