Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

154
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!