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

302
Views
Ordenar matrices en Java y manejar cualquier valor nulo

Necesito escribir un método de clasificación para mi proyecto... Es un juego de cartas. Estas son las especificaciones del método.

  • no puede usar arrays.sort() ni ninguna otra rutina de biblioteca externa.
  • ordenar la mano en orden ascendente de valor de tarjeta
  • conjunto ordenado a verdadero.
  • manejar casos cuando las matrices (mano) no están llenas/contienen valores nulos. y manejar los casos cuando la matriz de tarjetas no está llena.

A continuación se muestra el código que tengo hasta ahora, que funciona pero que necesita manejar nulos y no matrices completas (a mano). Cualquier sugerencia o puntero sería apreciado. Gracias.

 public void sortHand(){ // loop over every slot for (int i = 0 ; i < cards.length; i++) { for (int j = i+1 ; j < cards.length; j++) { //getValue returns face value of card if(cards[j].getValue().compareTo(cards[i].getValue()) < 0) { //swap Card temp = cards[i]; cards[i] = cards[j]; cards[j] = temp; } else { isSorted = false; } } } isSorted = true; }
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Su código no asume ningún número particular de cartas, por lo que ya maneja manos no completas. Allí no se necesita nada.

 if(cards[j].getValue().compareTo(cards[i].getValue()) < 0)

Debe manejar los casos en los que las cards[i] o cards[j] son nulas. No desea llamar a .getValue() en un valor nulo; arrojará una NullPointerException .

Hay tres casos a manejar: una carta es nula, la otra es nula, o ambas lo son. Si ambos son nulos, no necesita intercambiar nada. Si uno es nulo pero el otro no, debe decidir si nulo va primero o último. En un caso cambiarás y en el otro no harás nada.

 if (cards[i] == null && cards[j] == null) { // no swap } else if (cards[i] == null && cards[j] != null) { // swap if nulls go last, otherwise do nothing } else if (cards[i] != null && cards[j] == null) { // swap if nulls go first, otherwise do nothing } else if (cards[j].getValue().compareTo(cards[i].getValue()) < 0) { ... }

Dejo como ejercicio combinar los casos de "intercambio" apropiados en uno solo if se usa || . ¡Ten cuidado! Debe asegurarse de que ninguna tarjeta sea nula antes de llamar a .getValue() . El orden de los cheques es crucial.

 else { isSorted = false; }

No hay necesidad de esta cláusula, por cierto. Simplemente establezca isSorted en true al final del método. No necesita establecerlo en false en medio de la clasificación. Nadie va a pasar la bandera mientras clasificas activamente la mano.

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!