Buenos días, estoy intentando realizar un método que me calcule la edad de un usuario a partir de su fecha de nacimiento. Este valor que debo obtener lo debo mostrar en una tabla por consola, pero siempre me da un valor null.
Tengo una clase llamada Trabajador que tan solo debe contener lo siguiente: [indent]Atributos: Nombre, apellidos, email de tipo String Fecha de nacimiento de tipo Calendar.[/indent] [indent]Métodos: Calcular edad Calcular días restantes hasta su próximo cumpleaños.[/indent]
En la clase main llamada Empresa se debe preguntar nombre, apellidos y la fecha de nacimiento al nuevo trabajador, calcularle la edad y los días restantes hasta su próximo cumpleaños.
Les muestro mi progreso del código por si me pueden echar una mano.. Muchas gracias.
//If your birthday has occurred this year already, add 1 to the year. if (nextBDay.isBefore(today) || nextBDay.isEqual(today)) { nextBDay = nextBDay.plusYears(1); }
Period p = Period.between(today, nextBDay); long p2 = ChronoUnit.DAYS.between(today, nextBDay); System.out.println(); return 0; } }
/* Clase Empresa */
public class Trabajadores implements Sistema {
private ArrayList<Trabajador> listTrabajadores = new ArrayList<Trabajador>(); BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
/* Metodo para crear un nuevo trabajador */ private Trabajador crearTrabajador() { Trabajador trabajador = null; try { System.out.println("Creando un nuevo trabajador.");
String nombre = pedirCadena("Introduzca el NOMBRE:\n"); String apellidos = pedirCadena("Introduzca los APELLIDOS:\n"); String email = pedirCadena("Introduzca el EMAIL:\n");
System.out.println("Introduzca la FECHA DE NACIMIENTO [formato DD/MM/YYYY]"); Scanner scanner = new Scanner(System.in); String input = scanner.nextLine(); scanner.close();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar fechaNacimiento = Calendar.getInstance(); fechaNacimiento.setTime(sdf.parse(input));
Buenos días, estoy intentando realizar un método que me calcule la edad de un usuario a partir de su fecha de nacimiento. Este valor que debo obtener lo debo mostrar en una tabla por consola, pero siempre me da un valor null.
Tengo una clase llamada Trabajador que tan solo debe contener lo siguiente:
[indent]Atributos:
Nombre, apellidos, email de tipo String
Fecha de nacimiento de tipo Calendar.[/indent]
[indent]Métodos:
Calcular edad
Calcular días restantes hasta su próximo cumpleaños.[/indent]
En la clase main llamada Empresa se debe preguntar nombre, apellidos y la fecha de nacimiento al nuevo trabajador, calcularle la edad y los días restantes hasta su próximo cumpleaños.
Les muestro mi progreso del código por si me pueden echar una mano.. Muchas gracias.
/* Clase Trabajador */
public class Trabajador {
// Atributos
private String nombre;
private String apellidos;
private String email;
private Calendar fechaNacimiento;
// Constructora/s de la clase
public Trabajador(String nombre, String apellidos, String email, Calendar fechaNacimiento) {
this.nombre = nombre;
this.apellidos = apellidos;
this.email = email;
this.fechaNacimiento = fechaNacimiento;
}
}
// Getters & setters
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellidos() {
return apellidos;
}
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public EstadoCivil getEstadoCivil() {
return estadoCivil;
public Calendar getFechaNacimiento() {
return fechaNacimiento;
}
public void setFechaNacimiento(Calendar fechaNacimiento) {
this.fechaNacimiento = fechaNacimiento;
}
// Metodos
@Override
public String toString() {
String str = "";
str += "Trabajador [" + ", nombre=" + nombre + ", apellidos=" + apellidos;
str += ", fechaNacimiento=" + fechaNacimiento + ", email=" + email + "'";
return str;
}
public int edad() {
Calendar ahora = new GregorianCalendar();
if (ahora.get(Calendar.YEAR) >= ( fechaNacimiento ).get(Calendar.YEAR)) {
if (ahora.get(Calendar.MONTH) >= fechaNacimiento.get(Calendar.MONTH)) {
return ahora.get(Calendar.YEAR) - (fechaNacimiento).get(Calendar.YEAR);
}
else
return ahora.get(Calendar.YEAR) - (fechaNacimiento).get(Calendar.YEAR) - 1;
}
else
return 0;
}
public int diasCumpleanos() {
LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(1960, Month.JANUARY, 1);
LocalDate nextBDay = birthday.withYear(today.getYear());
//If your birthday has occurred this year already, add 1 to the year.
if (nextBDay.isBefore(today) || nextBDay.isEqual(today)) {
nextBDay = nextBDay.plusYears(1);
}
Period p = Period.between(today, nextBDay);
long p2 = ChronoUnit.DAYS.between(today, nextBDay);
System.out.println();
return 0;
}
}
/* Clase Empresa */
public class Trabajadores implements Sistema {
private ArrayList<Trabajador> listTrabajadores = new ArrayList<Trabajador>();
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
/* Metodo para crear un nuevo trabajador */
private Trabajador crearTrabajador() {
Trabajador trabajador = null;
try {
System.out.println("Creando un nuevo trabajador.");
String nombre = pedirCadena("Introduzca el NOMBRE:\n");
String apellidos = pedirCadena("Introduzca los APELLIDOS:\n");
String email = pedirCadena("Introduzca el EMAIL:\n");
System.out.println("Introduzca la FECHA DE NACIMIENTO [formato DD/MM/YYYY]");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
scanner.close();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar fechaNacimiento = Calendar.getInstance();
fechaNacimiento.setTime(sdf.parse(input));
trabajador = new Trabajador(crearIdentificador(), nombre, apellidos, email, fechaNacimiento);{
}
}catch (Exception ExcepcionFechaNoValida) {
trabajador = null;
}
return trabajador;
}
//* Metodo que muestra la lista de trabajadores
private void listaTrabajadores() {
if (listTrabajadores != null && !listTrabajadores.isEmpty()) {
String[] cabeceras = new String[]{"NOMBRE", "APELLIDOS", "EMAIL", "FECHA-NAC", "EDAD", "CUMPLEAÑOS"};
System.out.println(":: Mostrando todos los trabajadors ...");
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(":: Instante actual: " + dateFormat.format(cal.getTime()));
System.out.println("Numero total de trabajadors (" + listTrabajadores.size() + ")");
System.out.format("%4s %14s %14s %8s %22s %15s \n", cabeceras[0], cabeceras[1], cabeceras[2], cabeceras[3], cabeceras[4], cabeceras[5]);
for (Trabajador e : listTrabajadores) {
LocalDate fechaNacimiento;
LocalDate currentDate;
System.out.format("%4s %10s %12s %20s %14s %10s \n",
e.getIdentificadorFormateado(), e.getNombre(), e.getApellidos(), e.getEmail(), e.getFechaNacimiento(), e.diasCumpleanos());
}
System.out.println("\n\n");
}
}