Muchas gracias Kabuto por la ayuda.
Estoy aprendiendo a usar arraylist, que no se me dio esa idea de crear arraylist para cada categoria.
Estuve aplicando en mi codigo tu ayuda exactamente del metodo listado por categoria, solamente tengo el problema al imprimir los datos, en consola no me aparece los objetos de los arraylist, me indica esto: "Sistema.Persona@6483f5ae"
Compartire el codigo de este ejercicio que estuve haciendo
Primero comencé por crear la clase Persona para los atributos, metodos set&get y constructor para aplicar herencia ya que cree otra clase Sistema para los metodos
import java.io.IOException;
import java.util.Calendar;
public class Persona {
protected String nombre;
protected String apellido;
protected String fechaNaci;
protected String eps; //centro de salud
protected int documento; //numero de carnet
protected int edad;
protected int diaNaci, mesNaci, añoNaci; // (dd / mm / aa)
Persona() {
}
public Persona(String nombre, String apellido, String fechaNaci, String eps, int documento, int edad, int diaNaci, int mesNaci, int añoNaci) {
this.nombre = nombre;
this.apellido = apellido;
this.fechaNaci = fechaNaci;
this.eps = eps;
this.documento = documento;
this.edad = edad;
this.diaNaci = diaNaci;
this.mesNaci = mesNaci;
this.añoNaci = añoNaci;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public String getFechaNacimiento() {
return fechaNaci;
}
public void setFechaNacimiento(String fechaNaci) {
this.fechaNaci = fechaNaci;
}
public String getEps() {
return eps;
}
public void setEps(String eps) {
this.eps = eps;
}
public int getDocumento() {
return documento;
}
public void setDocumento(int documento) {
this.documento = documento;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
}
en la clase sistema van todos los metodos: entrada de datos, mostrar los datos, calcular la edad de acuerdo a la fecha nacimiento, y por ultimo, listar por categoria.
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import javax.swing.JOptionPane;
public class Sistema extends Persona{
//---------------------------------------------------------------------------------------------------
public ArrayList<Persona> listaJugador = new ArrayList<Persona>();
//-----------------CONSTRUCTORS----------------------------------------------------------------------------
Sistema() {
}
public Sistema(String nombre, String apellido, String fechaNaci, String eps, int documento, int edad, int diaNaci, int mesNaci, int añoNaci) {
super(nombre, apellido, fechaNaci, eps, documento, edad, diaNaci, mesNaci, añoNaci);
}
//------------------------METODOS-------------------------------------------------------------------------------
public String entrada(String dato){
return JOptionPane.showInputDialog(dato);
}
public void agregarDatos() throws IOException{
nombre = entrada("Nombre");
apellido = entrada("Apellido");
fechaNaci = entrada("Fecha de nacimiento");
añoNaci = fechaNacimiento(fechaNaci);
eps = entrada("EPS");
documento = Integer.parseInt(JOptionPane.showInputDialog("Carnet"));
edad = calcularEdad();
Persona p = new Persona();
p.setNombre(nombre);
p.setApellido(apellido);
p.setFechaNacimiento(fechaNaci);
p.setEps(eps);
p.setDocumento(documento);
p.setEdad(edad);
listaJugador.add(p);
}
public void mostrarDatos(){
//METODO PARA MOSTRAR EN FORMA DE LISTA LOS DATOS QUE SE AGREGARON
for (int i = 0; i < listaJugador.size(); i++) {
System.out.print("\tJugador Nro."+(i+1)+"\n"
+"Nombre: "+listaJugador.get(i).getNombre()+"\n"
+"Apellido: "+listaJugador.get(i).getApellido()+"\n"
+"Fecha de nacimiento: "+listaJugador.get(i).getFechaNacimiento()+"\n"
+"EPS: "+listaJugador.get(i).getEps()+"\n"
+"Nro. de carnet: "+listaJugador.get(i).getDocumento()+"\n"
+"Edad: "+listaJugador.get(i).getEdad()+"\n");
}
}
public int fechaNacimiento(String fechaNaci){
String dia, mes, año; // (dd / mm / aa)
int posicion;
posicion = fechaNaci.indexOf("/");
dia = fechaNaci.substring(0, posicion);
fechaNaci = fechaNaci.substring(posicion+1);
posicion = fechaNaci.indexOf("/");
mes = fechaNaci.substring(0, posicion);
fechaNaci = fechaNaci.substring(posicion+1);
año = fechaNaci;
diaNaci = Integer.parseInt(dia);
mesNaci = Integer.parseInt(mes);
añoNaci = Integer.parseInt(año);
return añoNaci;
}
public int calcularEdad() throws IOException {
Calendar fechaAct = Calendar.getInstance();
int diaAct = fechaAct.get(Calendar.DAY_OF_MONTH);
int mesAct = fechaAct.get(Calendar.MONTH);
int añoAct = fechaAct.get(Calendar.YEAR);
edad = añoAct - añoNaci;
if (mesAct-mesNaci <= 0 && diaAct-diaNaci < 0) {
edad--;
}
return edad;
}
public void listarCategorias() throws IOException{
System.out.println("\nListado por Categorías...\n");
if (listaJugador.isEmpty())
System.out.println("No hay Jugadores registrados");
else {
ArrayList<Persona> infantil = new ArrayList<Persona>();
ArrayList<Persona> juvenil = new ArrayList<Persona>();
ArrayList<Persona> unica = new ArrayList<Persona>();
ArrayList<Persona> veteranos = new ArrayList<Persona>();
for (Persona jugador: listaJugador) {
int edad = jugador.getEdad();
System.out.println("\tEdad: "+edad);
if (edad >=5 && edad <=10)
infantil.add(jugador);
else if (edad >= 11 && edad <= 15)
juvenil.add(jugador);
else if (edad >= 16 && edad <= 34)
unica.add(jugador);
else if (edad >=35)
veteranos.add(jugador);
}
System.out.println("\t- Infantil -\n");
if (infantil.isEmpty())
System.out.println("No hay jugadores en esta categoria");
else
for (Persona infante: infantil)
System.out.println(infante + "\n");
System.out.println("\n\t- Juvenil -\n");
if (juvenil.isEmpty())
System.out.println("No hay jugadores en esta categoria");
else
for (Persona joven: juvenil)
System.out.println(joven + "\n");
System.out.println("\n\t- Unica -\n");
if (unica.isEmpty())
System.out.println("No hay jugadores en esta categoria");
else
for (Persona unico: unica)
System.out.println(unico + "\n");
System.out.println("\n\t- Veteranos -\n");
if (veteranos.isEmpty())
System.out.println("No hay jugadores en esta categoria");
else
for (Persona veterano: veteranos)
System.out.println(veterano + "\n");
}
}
}
en la clase Principal tengo el menu con 4 opciones: registrar a los jugadores del equipo, ver la info de todos los jugadores, ver las categorias y finalizar el programa
import java.io.IOException;
import javax.swing.JOptionPane;
public class Principal {
public static void main(String[] args) throws IOException {
Principal p = new Principal();
p.menu();
}
public void menu() throws IOException{
Sistema s = new Sistema();
int opcion;
do {
opcion = Integer.parseInt(JOptionPane.showInputDialog(null," SISTEMA DE MATRICULACIÓN"
+"\n 1. Registrar equipo de baloncesto"
+"\n 2. Información de todos los jugadores"
+"\n 3. Ver categorias"
+"\n 4. SALIR"
+"","MENU PRINCIPAL",JOptionPane.QUESTION_MESSAGE));
switch(opcion){
case 1:
s.agregarDatos();
break;
case 2:
System.out.println("INFORMACIÓN DEL EQUIPO DE BALONCESTO"+"\n");
s.mostrarDatos();
System.out.println();
break;
case 3:
s.listarCategorias();
break;
case 4:
JOptionPane.showMessageDialog(null, " FINALIZO EL PROGRAMA");
System.exit(0);
break;
default:
System.out.println();
JOptionPane.showInputDialog(null," ELIJA UNA OPCION VALIDA"
+ "\n 1. Volver","ERROR",JOptionPane.WARNING_MESSAGE);
}
} while (opcion!=4);
}
}
Agradecería mucho si corrigen mi codigo, ya que esta con errores.