Hola a todos, he empezado no hace mucho con esto de programar en java y leyendo un código me ha surgido una duda. El código trata de generar 6 números, ya sea de manera manual o de manera automática. Y si es automática, van a ser números del 1 al 50 y no se pueden repetir entre ellos. Entonces tengo para ellos se crean dos clases, la primera clase se llama Prueba,y alberga la interfaz gráfica del programa.
Código Java:
Ver originalimport java.awt.*;
import javax.swing.*;
public class Prueba
extends JFrame { PruebaEventos primi = new PruebaEventos(this);
// configurar fila 1
// configurar fila 2
public Prueba() {
super("Numeros aleatorios");
setSize(750, 270);
setDefaultCloseOperation
(JFrame.
EXIT_ON_CLOSE); setLayout(layout);
automatico.addItemListener(primi);
manual.addItemListener(primi);
10, 10);
opcion.add(automatico);
opcion.add(manual);
fila1.setLayout(layout1);
fila1.add(automatico);
fila1.add(manual);
add(fila1);
fila2.setLayout(layout2);
fila2.add(etiquetaNumeros);
for (int i = 0; i < 6; i++) {
fila2.add(numeros[i]);
}
add(fila2);
setVisible(true);
}
public static void main
(String[] arguments
) { Prueba marco = new Prueba();
}
}
Y la segunda clase es la que va a albergar la interfaz ItemListener para saber que casilla se ha marcado, si la que pone "automático" o "manual".
Código Java:
Ver originalimport javax.swing.*;
import java.awt.event.*;
Prueba gui;
public PruebaEventos(Prueba in) {
gui = in;
}
public void itemStateChanged
(ItemEvent event
) {
Object item
= event.
getItem(); if (item == gui.automatico) {
for (int i = 0; i < 6; i++) {
int eleccion;
do {
eleccion
= (int) Math.
floor(Math.
random() * 50 + 1); } while (numeroRepetido(eleccion, gui.numeros, i));
gui.numeros[i].setText("" + eleccion);
}
} else {
for (int i = 0; i < 6; i++) {
gui.numeros[i].setText(null);
}
}
}
boolean numeroRepetido
(int num,
JTextField[] pastNums,
int count
) { //Compara cada número que vaya sacando con los que ya hayan salido y devuelve true o false según esté repetido o no.
for (int i = 0; i < count; i++) {
if (Integer.
parseInt(pastNums
[i
].
getText()) == num
) { return true;
}
}
return false;
}
}
Y mi duda va sobre la condición del condicional if de esta clase que me devuelve valor true o false. Ya que sé que lo que hace es comparar los valores del array pastNums con el integer num, pero lo que no entiendo es qué valor compara cuando el array pasNums está vacío, es decir, cuando todavía no le he introducido ningún valor. Porque sé que por ejemplo los arrays de tipo int se rellenan por defecto con 0 y los de tipo String con null, pero no sé como se rellenan por defecto los arrays de tipo JTextField. Porque buscando por internet he leído que se rellena por defecto con "",pero entonces ¿como puede hacer un casting a integer de ""?.Sí alguien me pudiera explicar esta parte, le estaría muy agradecido