Autor Tema: Ayuda con un ejercicio arraylist java  (Leído 482 veces)

wwmeowo

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
Ayuda con un ejercicio arraylist java
« en: 10 de Mayo 2021, 08:34 »
Saludos!
soy nueva interactuando en este foro
quiero solicitar su ayuda con este algoritmo respecto a POO, si gustan en ayudarme se los agradezco y ayudo compartiendo el codigo.

la mayor parte lo tengo hecho (aplicando arraylist), solo tengo un problema en entender la parte: "listar por categoria" (no se como empezar, habia intentado algunas formas pero no me dio buen resultado)

ALGORITMO
permita registra/inscribir/matricular personas en un equipo de baloncesto
debe permitir el sistema registrar los siguiente campos:
-nombre
-apellido
-fecha nacimiento
-eps
-documento

el sistema debe clasificar a cada persona matriculada en la categoria correspondiente
dependiendo la edad, la cual se calcula con la fecha de nacimiento

las categorias son:
-infantil (5 a 10)
-juvenil (11 a 15)
-unica (16 a 34)
-veteranos (mayores a 35).

el sistema debe permitir listar por categoria
« Última modificación: 10 de Mayo 2021, 08:35 por wwmeowo »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 725
    • Ver Perfil
Re: Ayuda con un ejercicio arraylist java
« Respuesta #1 en: 10 de Mayo 2021, 12:58 »
Hola.

Todo depende un poco de cómo sea tu código.

Supongamos que has creado una clase (deberías) llamada Jugador, o Persona, o lo que sea...
Necesitas que esta clase sea capaz de calcular la edad del Jugador, según la fecha de nacimiento.

No se como estás recogiendo la fecha de nacimiento, puede ser un String, pero esto aumentará el código necesario para hacer el cálculo.

Si estás usando la clase LocalDate (deberías) entonces el cómputo es mucho más sencillo.
Expongo la clase que he escrito yo, al final hay dos métodos.
Uno para calcular la edad, que la retorna como valor int.

El otro es simplemente una sobreescritura del método toString(), para luego facilitar mostrar los datos en pantalla cuando haya que listar los jugadores:
Código: [Seleccionar]
import java.time.LocalDate;

public class Jugador {

private String nombre;
private String apellido;
private LocalDate fechaNac;
private String eps;
private String documento;

public Jugador(String nombre, String apellido, LocalDate fechaNac, String eps, String documento) {
this.nombre = nombre;
this.apellido = apellido;
this.fechaNac = fechaNac;
this.eps = eps;
this.documento = documento;
}

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 LocalDate getFechaNac() {
return fechaNac;
}

public void setFechaNac(LocalDate fechaNac) {
this.fechaNac = fechaNac;
}

public String getEps() {
return eps;
}

public void setEps(String eps) {
this.eps = eps;
}

public String getDocumento() {
return documento;
}

public void setDocumento(String documento) {
this.documento = documento;
}

public int calculaEdad() {

LocalDate hoy = LocalDate.now();
//Calculamos años diferencia
int anios = hoy.getYear() - fechaNac.getYear();
//Afinamos cálculo segun dia del año
if (hoy.getDayOfYear() > fechaNac.getDayOfYear())
anios--; //Último año no está completo

return anios;
}

@Override
public String toString() {
return String.format("Nombre: %s %s\nFecha Nacimiento: %s\nEPS: %s\nDocumento: %s",
nombre, apellido, fechaNac.toString(), eps, documento);
}

}

Bien, vamos ahora a la clase principal.

Menú con tres opciones:
registrar jugador, listar categorías y terminar el programa

Usaremos un ArrayList para registrar a todos los jugadores que se introducen.
El proceso de registro lo haré mediante un método que pide los datos necesarios.

En el método para listar las categorías, lo que haré será crear 4 ArrayList, uno por cada categoría, y recorreré el ArrayList principal pidiendo a cada objeto Jugador que me de su edad.
Analizando la edad, introduciré a cada Jugador en el ArrayList correspondiente a su categoría.

Tras clasificar a todos los Jugadores, pues ahora muestro en pantalla el contenido de cada ArrayList de categorías.

Y listo, eso sería todo.
Básicamente es codificar un método capaz de calcular la edad, y en base a este dato, clasificar los jugadores en diferentes listados, según categoría.
Pregunta si algo no lo entiendes. Un saludo.

Código: [Seleccionar]
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Scanner;

public class GestionJugadores {

private static ArrayList<Jugador> jugadores = new ArrayList<Jugador>();
private static Scanner teclado = new Scanner(System.in);

public static void main(String[] args) {

char opcion = ' ';

do {
System.out.println("\n[1] -- Registrar Jugador");
System.out.println("[2] -- Listar por Categorías");
System.out.println("[0] -- FIN DE PROGRAMA");
System.out.print("Elija: ");
opcion = teclado.nextLine().charAt(0);

switch(opcion) {
case '0':
System.out.println("\n\t\tPROGRAMA TERMINADO");
break;
case '1':
registrarJugador();
break;
case '2':
listarCategorias();
break;
default:
System.out.println("Opción equivocada\n");
}

}while (opcion != '0');

}

private static void registrarJugador() {
System.out.println("\nNuevo Jugador...\n");
System.out.print("Nombre: ");
String nombre = teclado.nextLine();
System.out.print("Apellido: ");
String apell = teclado.nextLine();
System.out.println("- Fecha Nacimiento -");
System.out.print("Dia: ");
int dia = Integer.parseInt(teclado.nextLine());
System.out.print("Mes: ");
int mes = Integer.parseInt(teclado.nextLine());
System.out.print("Año: ");
int anio = Integer.parseInt(teclado.nextLine());
System.out.print("EPS: ");
String eps = teclado.nextLine();
System.out.print("Documento: ");
String documento = teclado.nextLine();
//Datos capturados, registramos Jugador
jugadores.add(new Jugador(nombre, apell, LocalDate.of(anio, mes, dia), eps, documento));
}

private static void listarCategorias() {
System.out.println("\nListado por Categorías...\n");
if (jugadores.isEmpty())
System.out.println("No hay Jugadores registrados");
else {
//Creamos arrays para cada categoría
ArrayList<Jugador> infantil = new ArrayList<Jugador>();
ArrayList<Jugador> juvenil = new ArrayList<Jugador>();
ArrayList<Jugador> unica = new ArrayList<Jugador>();
ArrayList<Jugador> veteranos = new ArrayList<Jugador>();
//Recorremos Jugadores registrados y clasificamos según la edad
for (Jugador jugador: jugadores) {
int edad = jugador.calculaEdad();
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);
}

//Listamos las categorías
System.out.println("\t- Infantil -\n");
if (infantil.isEmpty())
System.out.println("No hay Jugadores en esta Categoría");
else
for (Jugador 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 Categoría");
else
for (Jugador 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 Categoría");
else
for (Jugador 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 Categoría");
else
for (Jugador veterano: veteranos)
System.out.println(veterano + "\n");
}
}

}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

wwmeowo

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Ayuda con un ejercicio arraylist java
« Respuesta #2 en: 11 de Mayo 2021, 08:55 »
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

Código: [Seleccionar]
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.

Código: [Seleccionar]
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

Código: [Seleccionar]
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.

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 725
    • Ver Perfil
Re: Ayuda con un ejercicio arraylist java
« Respuesta #3 en: 11 de Mayo 2021, 13:01 »
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"


Te falta añadirle el método toString() a la clase Persona:
Código: [Seleccionar]
@Override
public String toString() {
return String.format("Nombre: %s %s\nFecha Nacimiento: %s\nEPS: %s\nDocumento: %s",
nombre, apellido, fechaNac.toString(), eps, documento);
}

Este método es el que hace que se pueda mostrar en pantalla los datos de un objeto, simplemente poniéndolo dentro de un System.out.println()

Código: [Seleccionar]
for (Persona joven: juvenil)
                    System.out.println(joven + "\n");


Sobre tu código, la clase Sistema no debería heredar de Persona. No es necesario y además no tiene sentido.

Si haces una relación de herencia entre Sistema y Persona, estás diciendo que "un Sistema es una Persona".
Es decir, que tu clase Sistema, tiene como atributos un nombre, un apellido, una edad....

Por eso luego el compilador te obliga a que a Sistema le incluyas este constructor:
Código: [Seleccionar]
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);
    }

Porque al construir un Sistema, estás construyendo una Persona.. e insisto, eso no tiene sentido.

Entre Sistema y Persona no queremos una relación de herencia.
Si decimos que Sistema extends Persona, entonces hacemos que ambas entidades sean lo mismo (o casi lo mismo).

Queremos una relación de agregación, es decir, la clase Sistema va a tener Personas agregadas. Pero Sistema y Persona van a seguir siendo entidades completamente distintas.
Y para hacer esta relación no se requiere de ninguna palabra clave ni nada. Simplemente, en el momento que añadimos como atributo de Sistema, alguna colección de tipo Persona (como el ArrayList que señalo en rojo), ya hemos establecido una agregación

Citar
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);
    }

Otra cosa de la que puedes prescindir, son los throws de los métodos

Código: [Seleccionar]
public void agregarDatos() throws IOException
IOException es una excepción que puede producirse en procesos de "entrada" y "salida", es decir, cuando se intenta leer/escribir un fichero en disco, o que está en una unidad de red, o intentando acceder a una URL de Internet,....

No se va a producir por leer datos con JOptionPane o calcular edades con unos int.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

wwmeowo

  • Sin experiencia
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Ayuda con un ejercicio arraylist java
« Respuesta #4 en: 11 de Mayo 2021, 16:10 »
Muchas gracias por corregir mi codigo.

Ya corregi de acuerdo a tus consejos; sobre las excepciones es nuevo para mi (todavia no profundice), no recuerdo bien al comienzo de hacer este ejercicio tenia muchos errores que me sugeria importa IOException, en lo posterio al completar mi ejercicio deje las excepciones como estaban.

En lo personal seguire revisando, de todo modos, comparto la ultima modificación que hice.

*Clase Persona:
Código: [Seleccionar]
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;
   
    Persona() {
    }

    public Persona(String nombre, String apellido, String fechaNaci, String eps, int documento, int edad) {
        this.nombre = nombre;
        this.apellido = apellido;
        this.fechaNaci = fechaNaci;
        this.eps = eps;
        this.documento = documento;
        this.edad = edad;
    }

    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;
    }
   
    @Override
    public String toString() {
       
        return "\tJugador"
                + "\nNombre: " + nombre
                + "\nApellido: " + apellido
                + "\nFecha Nacimiento: " + fechaNaci
                + "\nEPS: " + eps
                + "\nNro. de carnet: " + documento
                + "\nEdad: " + edad;
    }
   
}

*Clase Sistema:
Código: [Seleccionar]
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import javax.swing.JOptionPane;

public class Sistema {
   
    protected int diaNaci, mesNaci, añoNaci; // (dd / mm / aa)
    protected int edad;
   
    //---------------------------------------------------------------------------------------------------
    public ArrayList<Persona> listaJugador = new ArrayList<Persona>();
   
    //-----------------CONSTRUCTOR----------------------------------------------------------------------------
    public Sistema() {
    }
    //------------------------METODOS-------------------------------------------------------------------------------
    public String entrada(String dato){
        return JOptionPane.showInputDialog(dato);
    }
   
    public void agregarDatos() throws IOException{
       
        String nombre = entrada("Nombre");
        String apellido = entrada("Apellido");
        String fechaNaci = entrada("Fecha de nacimiento");
        añoNaci = fechaNacimiento(fechaNaci);
        String eps = entrada("EPS");
        int 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 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 CATEGORIAS\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 +"\n");
               
                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");
        }
    }
}

no modifique esta clase
*Clase Principal
Código: [Seleccionar]
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 boloncesto"
                    +"\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);
    }
}

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".