[ Foro de Java ]

Como puedo realizar el calculo de la edad del estudiante por medio de su fecha de nacimiento?! así mismo como lo puedo mostrar por medio de set and get ??!

30-Oct-2020 22:07
Nick Nitro
2 Respuestas

import java.util.Calendar;
import java.util.GregorianCalendar;


public class Estudiante {
     
   
    Calendar fechaNac=new GregorianCalendar(1995,05,05);
    Calendar fechaHoy=Calendar.getInstance();
    int anoNac=fechaNac.get(Calendar.YEAR);
    int anoHoy=fechaHoy.get(Calendar.YEAR);
    private int edad;
   
   
       public int getEdad() {
       return edad;
   }

   public void setEdad(int edad) {
       this.edad = edad;
       
       
   }

public class Principal {

   public static void main(String[] args) {
      Estudiante objeto1 = new Estudiante ();
     
objeto1.setEdad();
     System.out.println("Edad: "+objeto1.getEdad());
   }
   
}


20-Nov-2020 06:51
Franco Garcia

Hola, buenas noches (aca lo es por lo menos)...
Yo crearia 2 clases Abstractas con metodos staticos que hagan todo el trabajo:
1-era CLASE
package fechas; // lo podes cambiar,  pero de esta forma el nombre del paquete indica de que trata la //clase, la clase se llama Diferencia y el metodo estatico es fecha... para usarlo te quedaria:
// Diferencia.fecha(aqui pones el objeto de tipo Calendar) -> Este metodo te saca la diferencia en años
// entre una fecha x y la fecha Actual (el metodo lo saca solo)
//borra el paquete si lo vas a poner en otro lado, porque sino te da error.

// el segundo metodo  Diferencia.fechas(fechavieja, fechanueva) --> este metodo te permite sacar
// la diferencia en años entre 2 fechas (no necesariametne la actual)

import java.util.Calendar;

public abstract class Diferencia
{
public static int fecha(Calendar fecha)
{
Calendar fechaActual = Calendar.getInstance();

int resultado = fechaActual.get(Calendar.YEAR) - fecha.get(Calendar.YEAR);

if(fechaActual.get(Calendar.MONTH) < fecha.get(Calendar.MONTH))
{
resultado--;
}
else
{
if (fechaActual.get(Calendar.MONTH) == fecha.get(Calendar.MONTH))
{
if(fechaActual.get(Calendar.DATE) < fecha.get(Calendar.DATE))
{
resultado--;
}
}
}
return resultado;
}
public static int fechas(Calendar fechaAntigua, Calendar fechaReciente)
{
int resultado = fechaReciente.get(Calendar.YEAR) - fechaAntigua.get(Calendar.YEAR);

if(fechaReciente.get(Calendar.MONTH) < fechaAntigua.get(Calendar.MONTH))
{
resultado--;
}
else
{
if (fechaReciente.get(Calendar.MONTH) == fechaAntigua.get(Calendar.MONTH))
{
if(fechaReciente.get(Calendar.DATE) < fechaAntigua.get(Calendar.DATE))
{
resultado--;
}
}
}
return resultado;
}
}
--------------------------------------------------------------------------------------------------------------------------------------------
Clase 2
package fechas; // tambien la cree dentro del paquete fechas. Esta clase abstracta tiene un solo metodo // estatico donde te pide un objeto de tipo Calendar (osea una fecha) y te devuelve un String con el
// formato: 00/00/0000... Repito, te devuelve un String...

import java.util.Calendar;

public abstract class Obtener
{
public static String fecha(Calendar fecha)
{
return fecha.get(Calendar.DATE)+"/"+(fecha.get(Calendar.MONTH)+1)+"/"+fecha.get(Calendar.YEAR);
}
}

Espero que te sirva y avisame  si hay algo que no entendes. Slds y exitos!!!


20-Nov-2020 07:04
Franco Garcia

Me falto decirte... en los metodos get solamente tenes que crear (por ejemplo)

Calendar nacimiento = Calendar.getInstance(); // y despues tenes que inyectarle los datos, dia, mes y año
nacimiento.et(anio, (mes-1), dia); // acordate que este metodo pide int osea, int dia, int mes y int anio
// y que el MES arranca en 0, osea 0 = Enero, 1= Febrero... 11=Diciembre... por lo que si el usuario
// ingresa los numeros 22 7 1992--> para que te lo tome bien le tenes que restar 1 porque 7 es Agosto
// y 6 es Julio, cuando ingreses el dato restale -1

public int getEdad()
{
return Diferencia.fecha(nacimiento); // suponiendo que hayas almacenada la fecha de nacimiento en una
// variable Callendar llamada nacimiento.
}
public String getNacimiento()
{
return Obtener.fecha(nacimiento);// el metodo es estatico, asi que no necesitas  crear ningun objeto para //usarlo, ademas que no vas a poder crearlo porque la clase es abstracta.
}






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)