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

298
Vistas
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 Respuestas
Responde la pregunta

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 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