Problema con el método toString() de mi clase

lokoxtinena
22 de Noviembre del 2005
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.

lokoxtinena
22 de Noviembre del 2005
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!

Rob
22 de Noviembre del 2005
Hola

Si haces un toString() de la hashtable, debería imprimirte su contenido.

ej: System.out.println(personas.toString());

Saludos



nicokiki
22 de Noviembre del 2005
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!!!!!!!