Ver Mensaje Individual
  #5 (permalink)  
Antiguo 17/03/2016, 04:23
juan30
 
Fecha de Ingreso: marzo-2016
Mensajes: 3
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Duda con un array de tipo JTextField

Sí probé a ejecutarlo y lo que me sorprendió es que cuando daba a la checkbox de automático se generaban los números aleatorios sin producirse ninguna excepción, por lo que el programa es totalmente funcional.Y eso es lo que me trae de cabeza, ya que como mi poca experiencia en java, veo que ese código no está del todo bien y aún así hace lo que se le pide.
Yo personalmente creo que para que ese código estuvies bien, antes del do while tendría que haber dado un valor al azar a gui.numeros[0] y luego el resto del código lo habría dejado como está. Algo como esto:
Código Java:
Ver original
  1. public void itemStateChanged(ItemEvent event) {
  2.         Object item = event.getItem();
  3.         if (item == gui.automatico) {
  4.             for (int i = 0; i < 6; i++) {
  5.                 int eleccion;
  6.                 //Estás dos lineas que hay a continuación son las que yo habría añadido antes de hacer el do while
  7.                 eleccion = (int) Math.floor(Math.random() * 50 + 1);
  8.                 gui.numeros[0].setText(""+eleccion);
  9.                 do {
  10.                     eleccion = (int) Math.floor(Math.random() * 50 + 1);
  11.                 } while (numeroRepetido(eleccion, gui.numeros, i));
  12.                 gui.numeros[i].setText("" + eleccion);
  13.             }
  14.         } else {
  15.             for (int i = 0; i < 6; i++) {
  16.                 gui.numeros[i].setText(null);
  17.             }
  18.         }
  19.     }
  20.      
  21.       boolean numeroRepetido(int num, JTextField[] pastNums, int count) {
  22.       //Compara cada número que vaya sacando con los que ya hayan salido y devuelve true o false según esté repetido o no.
  23.       for (int i = 0; i < count; i++) {
  24.           if (Integer.parseInt(pastNums[i].getText()) == num) {
  25.                 return true;
  26.             }
  27.         }
  28.         return false;
  29.     }
  30. }