Métodos calcular edad y días cumpleaños
Publicado por Lucas (4 intervenciones) el 11/05/2020 12:00:20
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:
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.
Tengo una clase llamada Trabajador que tan solo debe contener lo siguiente:
Atributos:
Nombre, apellidos, email de tipo String
Fecha de nacimiento de tipo Calendar.
Nombre, apellidos, email de tipo String
Fecha de nacimiento de tipo Calendar.
Métodos:
Calcular edad
Calcular días restantes hasta su próximo cumpleaños.
Calcular edad
Calcular días restantes hasta su próximo cumpleaños.
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/* 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");
}
}
Valora esta pregunta


0