Hola muy buenas a todos!! tengo un problema en este programa que estoy realizando ahora mismo el cual mediante la lectura de un fichero que contiene personas y sus datos, va a ordenarlas en función de si son monitores o usuarios en dos HashMaps diferentes ( Monitores y Usuarios). El problema está en que las clases monitores y usuarios heredan de la clase personas un identificador( idPersona) el nombre, los apellidos y la fecha de nacimiento. Esos 4 datos a la hora de imprimir los HashMap de Personas y Monitores me dice que son null y no deberia de ser asì , a parte cuando intento imprimir un hashmap con todas las personas , me dice la ruta donde se encuentra la clase personas . Os adjunto el codigo! muchas gracias!
MI PREGUNTA: ¿Porque cuando relleno el HashMap de Usuarios y Monitores , no me rellena los campos de id nombre apellidos fecha de nacimiento? ¿ Porque cuando imprimo el hashmap de personas me imprime el paquete donde se encuentra ?
ejemplo:
{1=es.uvigo.pii.instalacionesdeportivas.main.Persona@6d06d69c, 2=es.uvigo.pii.instalacionesdeportivas.main.Persona@7852e922, 3=es.uvigo.pii.instalacionesdeportivas.main.Persona@15db9742}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.util.HashMap;
import es.uvigo.pii.instalacionesdeportivas.main.Persona;
public class FicheroPersonas {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<Integer,Persona> Personas= new HashMap<Integer,Persona>();
HashMap<Integer,Usuario> Usuarios= new HashMap<Integer,Usuario>();
HashMap<Integer,Monitor> Monitores= new HashMap<Integer,Monitor>();
String[] datos=new String[10];
int i=0;
int idsOcupados=0;
FileReader fr = null;
BufferedReader br = null;
BufferedWriter bw;
String rutaPersonas = "personas.txt";
File personas = new File(rutaPersonas);
try {
// Apertura del fichero y creacion de BufferedReader para poder
// hacer una lectura comoda (disponer del metodo readLine()).
fr = new FileReader(personas);
br = new BufferedReader(fr);
// Lectura del fichero
String linea;
while ((linea = br.readLine()) != null) {
if(linea.startsWith("*")!=true){
datos[i]=linea; // guardo la linea
i++;
}
if(linea.startsWith("*")==true){
if(datos[1].equalsIgnoreCase("usuario")){
System.out.println(datos[0]+datos[1]);
Usuario usuario=new Usuario(Integer.parseInt(datos[0]),datos[2],datos[3],datos[4],datos[5],datos[6],Float.parseFloat(datos[7]),datos[8]);
Usuarios.put(Integer.parseInt(datos[0]), usuario);
Persona persona=new Persona(Integer.parseInt(datos[0]),datos[2],datos[3],datos[4]);
Personas.put(Integer.parseInt(datos[0]), persona);
}
if(datos[1].equalsIgnoreCase("monitor")){
System.out.println(datos[0]+datos[1]);
Monitor monitor=new Monitor(Integer.parseInt(datos[0]),datos[2],datos[3],datos[4],Integer.parseInt(datos[5]),datos[6]);
Monitores.put(Integer.parseInt(datos[0]), monitor);
Persona persona=new Persona(Integer.parseInt(datos[0]),datos[2],datos[3],datos[4]);
Personas.put(Integer.parseInt(datos[0]), persona);
}
i=0;
idsOcupados ++;
}
}
if(datos[1].equalsIgnoreCase("usuario")){
System.out.println(datos[0]+datos[1]);
idsOcupados ++;
}
if(datos[1].equalsIgnoreCase("monitor")){
System.out.println(datos[0]+datos[1]);
idsOcupados ++;
}
System.out.println(Monitores);
System.out.println(Usuarios);
System.out.println(Personas);
} catch (Exception e) {
e.printStackTrace();
} finally {
// En el finally cerramos el fichero, para asegurarnos
// que se cierra tanto si todo va bien como si salta
// una excepcion.
try {
if (null != fr) {
fr.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
public class Usuario extends Persona{
public int idUsuario;
public String nombre;
public String apellidos;
public String fechaNacimiento;
public String fechaAlta;
public String actividadesPrevias;
public float saldo;
public String actividadesActuales;
public Usuario(int idUsuario,String nombre,String apellidos,String fechaNacimiento,String fechaAlta,String actividadesPrevias, float saldo, String actividadesActuales){
super(idUsuario,nombre,apellidos,fechaNacimiento);
this.fechaAlta=fechaAlta;
this.actividadesActuales=actividadesActuales;
this.saldo=saldo;
this.actividadesPrevias=actividadesPrevias;
}
//GETTERS & SETTERS
@Override
public String toString() {
return "Usuario [nombre=" + nombre + ", apellido=" + apellidos+", fechaNacimiento=" + fechaNacimiento
+ ", fechaAlta=" + fechaAlta + ", actividadesPrevias=" + actividadesPrevias + ", saldo=" + saldo
+ ", actividadesActuales=" + actividadesActuales + "]";
}
public String getFechaAlta() {
return fechaAlta;
}
public void setFechaAlta(String fechaAlta) {
this.fechaAlta = fechaAlta;
}
public String getActividadesPrevias() {
return actividadesPrevias;
}
public void setActividadesPrevias(String actividadesPrevias) {
this.actividadesPrevias = actividadesPrevias;
}
public float getSaldo() {
return saldo;
}
public void setSaldo(float saldo) {
this.saldo = saldo;
}
public String getActividadesActuales() {
return actividadesActuales;
}
public void setActividadesActuales(String actividadesActuales) {
this.actividadesActuales = actividadesActuales;
}
}
public class Monitor extends Persona{
public int idMonitor;
public String nombre;
public String apellidos;
public String fechaNacimiento;
public int horasAsignables;
public String GruposImpartidos;
public Monitor(int idMonitor,String nombre, String apellidos, String fechaNacimiento, int horasAsignables, String GruposImpartidos){
super(idMonitor,nombre,apellidos,fechaNacimiento);
this.horasAsignables=horasAsignables;
this.GruposImpartidos=GruposImpartidos;
}
@Override
public String toString() {
return "Monitor [nombre=" + nombre + ", apellidos=" + apellidos + ", fechaNacimiento=" + fechaNacimiento
+ ", horasAsignables=" + horasAsignables + ", GruposImpartidos=" + GruposImpartidos + "]";
}
public int getHorasAsignables() {
return horasAsignables;
}
public void setHorasAsignables(int horasAsignables) {
this.horasAsignables = horasAsignables;
}
public String getGruposImpartidos() {
return GruposImpartidos;
}
public void setGruposImpartidos(String gruposImpartidos) {
GruposImpartidos = gruposImpartidos;
}
}
public class Persona {
public int idPersona;
public String nombre;
public String apellidos;
public String fechaNacimiento;
public Persona(int idPersona, String nombre, String apellidos,String fecha){
super();
this.idPersona=idPersona;
this.nombre=nombre;
this.apellidos=apellidos;
this.fechaNacimiento=fechaNacimiento;
}
//GETTERS & SETTERS
public int getIdPersona() {
return idPersona;
}
public void setIdPersona(int idPersona) {
this.idPersona = idPersona;
}
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 getFechaNacimiento() {
return fechaNacimiento;
}
public void setFechaNacimiento(String fechaNacimiento) {
this.fechaNacimiento = fechaNacimiento;
}
}