Problema con el método toString() de mi clase
no entiendo porque cuando compilo mi código nome muestra por pantalla el contenido de la HashTable que contiene los datos que le introduzco, el problema es que no me imprime por pantalla ni null ni dirección de memoria ni tan si quiera lo que yo quiero, el contenido del objeto (PersonaCivil, en mi caso) que contiene dicha HashTable.
Os pego el código a ver si me podeis ayudar porque la verdad que me estoy volviendo loco y estoy seguro de que es una chorrada que tengo delante de mis narices y no estoy viendo despues de tantas horas leyendome el código.
Gracias una vez más.
Toda esta es mi clase PersonaCivil:
public class PersonaCivil extends Persona {
public static PersonaCivil conyuge = null;
private String dni;
public boolean getcasado() {
if (this.conyuge != null) {
return true;
} else {
return false;
}
}
public PersonaCivil() {}
public PersonaCivil(String nombre, String apellido, int edad, String dni) {
this.nombre = nombre;
this.apellido = apellido;
this.edad = edad;
this.dni = dni;
}
public String getDni(PersonaCivil pers) {
return this.dni;
}
public void setDni(String dn) {
this.dni = dn;
}
public String toString() {
return "nPersona:n Nombre y Apellido: " + nombre + " " + apellido +
"n Edad: " + edad + "n DNI: " + dni + "nn" +
"Conyuge:n Nombre y Apellido: " + conyuge.nombre + " " +
conyuge.apellido + "n Edad: " + conyuge.edad + "n DNI: " +
conyuge.dni;
}
}
Antes de nada avisaros de que el código no peta, asà que quiero deciros que no tengo ningún error de compilación de eso ya me he preocupado antes de postear aquÃ.
Decidme como puedo hacer para mostrar el contenido de la HashTable que tengo invocada en mi main()
PD:
Os adjunto mis métodos que tengo en otra clase para:
añadirPersonas:
public static void añadirPersona(PersonaCivil p) {
personas.put(p.getDni(p), p);
}
obtenerPersonas:
public static PersonaCivil obtenerPersona(String dni) {
PersonaCivil p1 = new PersonaCivil();
if (personas.containsKey(dni)) {
p1 = (PersonaCivil) personas.get(dni);
} else if (!personas.containsKey(dni) && (dni.length() != 0)) {
System.out.print("nPersona no encontrada en memoria.");
p1 = null;
}
return p1;
}
Ahh!!, y en mi clase principal he creado la nombrada anteriormente HashTable de este modo:
static Hashtable personas = new Hashtable();
A ver si podeis ayudarme.
Gracias.
Os pego el código a ver si me podeis ayudar porque la verdad que me estoy volviendo loco y estoy seguro de que es una chorrada que tengo delante de mis narices y no estoy viendo despues de tantas horas leyendome el código.
Gracias una vez más.
Toda esta es mi clase PersonaCivil:
public class PersonaCivil extends Persona {
public static PersonaCivil conyuge = null;
private String dni;
public boolean getcasado() {
if (this.conyuge != null) {
return true;
} else {
return false;
}
}
public PersonaCivil() {}
public PersonaCivil(String nombre, String apellido, int edad, String dni) {
this.nombre = nombre;
this.apellido = apellido;
this.edad = edad;
this.dni = dni;
}
public String getDni(PersonaCivil pers) {
return this.dni;
}
public void setDni(String dn) {
this.dni = dn;
}
public String toString() {
return "nPersona:n Nombre y Apellido: " + nombre + " " + apellido +
"n Edad: " + edad + "n DNI: " + dni + "nn" +
"Conyuge:n Nombre y Apellido: " + conyuge.nombre + " " +
conyuge.apellido + "n Edad: " + conyuge.edad + "n DNI: " +
conyuge.dni;
}
}
Antes de nada avisaros de que el código no peta, asà que quiero deciros que no tengo ningún error de compilación de eso ya me he preocupado antes de postear aquÃ.
Decidme como puedo hacer para mostrar el contenido de la HashTable que tengo invocada en mi main()
PD:
Os adjunto mis métodos que tengo en otra clase para:
añadirPersonas:
public static void añadirPersona(PersonaCivil p) {
personas.put(p.getDni(p), p);
}
obtenerPersonas:
public static PersonaCivil obtenerPersona(String dni) {
PersonaCivil p1 = new PersonaCivil();
if (personas.containsKey(dni)) {
p1 = (PersonaCivil) personas.get(dni);
} else if (!personas.containsKey(dni) && (dni.length() != 0)) {
System.out.print("nPersona no encontrada en memoria.");
p1 = null;
}
return p1;
}
Ahh!!, y en mi clase principal he creado la nombrada anteriormente HashTable de este modo:
static Hashtable personas = new Hashtable();
A ver si podeis ayudarme.
Gracias.
Ayudadme por favor, es un tema que me urge, he de entregar la practica esta tarde y es lo unico que me falta por arreglar.
Gracias!
Gracias!
Hola
Si haces un toString() de la hashtable, deberÃa imprimirte su contenido.
ej: System.out.println(personas.toString());
Saludos
Si haces un toString() de la hashtable, deberÃa imprimirte su contenido.
ej: System.out.println(personas.toString());
Saludos
Hola!!!
A ver:
1- Si solo hiciste el new el toString() no te va a imprimir nada..
2- Si le pones (put) objetos al HashTable, el hecho de hacer toString() del HashTable te va a imprimir direcciones de memoria y otras cosas pero nunca tus objetos usando el toString() q implementaste en tu clase.. para hacer lo q vos queres deberias crear una clase tuya q herede de HashTable y sobreescribile el toString() y ahi obtene en un Set todos los keys y luego imprime cada uno de los objetos referenciados por esos keys q tiene el Set...
Salu2!!!!!!!
A ver:
1- Si solo hiciste el new el toString() no te va a imprimir nada..
2- Si le pones (put) objetos al HashTable, el hecho de hacer toString() del HashTable te va a imprimir direcciones de memoria y otras cosas pero nunca tus objetos usando el toString() q implementaste en tu clase.. para hacer lo q vos queres deberias crear una clase tuya q herede de HashTable y sobreescribile el toString() y ahi obtene en un Set todos los keys y luego imprime cada uno de los objetos referenciados por esos keys q tiene el Set...
Salu2!!!!!!!
