Problema con OBJETOS!!!!!!! HELP!!!! URGENTE!!
Mi problema es el siguiente, he de implementar un método que sirva para "casar personas" entonces lo que debe hacer este es lo siguiente:
Las personasCiviles que contiene mi HashTable debe asociarlas de manera que sus atributos conyuges sean el miembro opuesto es decir de manera clara, lo que se me pide hacer es lo siguiente:
p1.conyuge que sea p2 y que p2.conyuge que sea p1
Yo lo que tengo es lo siguiente:
public static void casar(String dni1, String dni2) {
PersonaCivil p1 = (PersonaCivil) personas.get(dni1);
PersonaCivil p2 = (PersonaCivil) personas.get(dni2);
p1.conyuge = (PersonaCivil) personas.get(dni2);
p1.conyuge.setDni(dni2);
p2.conyuge = (PersonaCivil) personas.get(dni1);
p2.conyuge.setDni(dni1);
}
pero lo que me muestra por pantalla es lo siguiente:
Persona:
Nombre y Apellido: Nombre1 Apellido1
Edad: 25
DNI: 1234
Conyuge:
Nombre y Apellido: Nombre1 Apellido1
Edad: 25
DNI: 1234
Persona:
Nombre y Apellido: Nombre2 Apellido2
Edad: 26
DNI: 4321
Conyuge:
Nombre y Apellido: Nombre1 Apellido1
Edad: 25
DNI: 1234
No encuentro el modo de hacer que ambas se apunten sin machacarse o es que no acabo de enterder bien el código, me gustarÃa saber como puedo hacerlo.
Gracias por adelantado.!!
Las personasCiviles que contiene mi HashTable debe asociarlas de manera que sus atributos conyuges sean el miembro opuesto es decir de manera clara, lo que se me pide hacer es lo siguiente:
p1.conyuge que sea p2 y que p2.conyuge que sea p1
Yo lo que tengo es lo siguiente:
public static void casar(String dni1, String dni2) {
PersonaCivil p1 = (PersonaCivil) personas.get(dni1);
PersonaCivil p2 = (PersonaCivil) personas.get(dni2);
p1.conyuge = (PersonaCivil) personas.get(dni2);
p1.conyuge.setDni(dni2);
p2.conyuge = (PersonaCivil) personas.get(dni1);
p2.conyuge.setDni(dni1);
}
pero lo que me muestra por pantalla es lo siguiente:
Persona:
Nombre y Apellido: Nombre1 Apellido1
Edad: 25
DNI: 1234
Conyuge:
Nombre y Apellido: Nombre1 Apellido1
Edad: 25
DNI: 1234
Persona:
Nombre y Apellido: Nombre2 Apellido2
Edad: 26
DNI: 4321
Conyuge:
Nombre y Apellido: Nombre1 Apellido1
Edad: 25
DNI: 1234
No encuentro el modo de hacer que ambas se apunten sin machacarse o es que no acabo de enterder bien el código, me gustarÃa saber como puedo hacerlo.
Gracias por adelantado.!!
Ayuda plis!!
Me urge bastante hacerlo ya que la entrega es para esta noche y solo me queda esta tonterÃa y por una tonterÃa no quiero perder nota, pero es que no caigo en como poderlo hacer.
Si alguien me pudiera echar un cable se lo agradecerÃa eternamente.
GRACIAS POR ADELANTADO DE NUEVO!!
Me urge bastante hacerlo ya que la entrega es para esta noche y solo me queda esta tonterÃa y por una tonterÃa no quiero perder nota, pero es que no caigo en como poderlo hacer.
Si alguien me pudiera echar un cable se lo agradecerÃa eternamente.
GRACIAS POR ADELANTADO DE NUEVO!!
¿Y asà no te funciona?
public static void casar(String dni1, String dni2) {
PersonaCivil p1 = (PersonaCivil) personas.get(dni1);
PersonaCivil p2 = (PersonaCivil) personas.get(dni2);
p1.conyuge = p2;
p2.conyuge = p1;
}
public static void casar(String dni1, String dni2) {
PersonaCivil p1 = (PersonaCivil) personas.get(dni1);
PersonaCivil p2 = (PersonaCivil) personas.get(dni2);
p1.conyuge = p2;
p2.conyuge = p1;
}
Mira t muestro lo que me ha imprimido por pantalla:
Persona:
Nombre y Apellido: Nombre1 Apellido1
Edad: 25
DNI: 1234
Conyuge:
Nombre y Apellido: Nombre1 Apellido1
Edad: 25
DNI: 1234
Persona:
Nombre y Apellido: Nombre2 Apellido2
Edad: 26
DNI: 4321
Conyuge:
Nombre y Apellido: Nombre1 Apellido1
Edad: 25
DNI: 1234
Es decir, lo mismo.
se me ha ocurrido una preguntilla asà mientras lo estaba intentando arreglar, el problema puede proceder de algun
this
????
Persona:
Nombre y Apellido: Nombre1 Apellido1
Edad: 25
DNI: 1234
Conyuge:
Nombre y Apellido: Nombre1 Apellido1
Edad: 25
DNI: 1234
Persona:
Nombre y Apellido: Nombre2 Apellido2
Edad: 26
DNI: 4321
Conyuge:
Nombre y Apellido: Nombre1 Apellido1
Edad: 25
DNI: 1234
Es decir, lo mismo.
se me ha ocurrido una preguntilla asà mientras lo estaba intentando arreglar, el problema puede proceder de algun
this
????
Ayudadme por favor!!!!
Necesito una respuesta para antes de las 19'00h por favor, me es muy necesario.
Necesito una respuesta para antes de las 19'00h por favor, me es muy necesario.
Deberias poner el código de PersonaCivil y el código de como pintas los resultados por pantalla... a ciegas no te puedo ayudar
Mi clase Persona es esta:
import java.io.*;
public class Persona {
//Atributos de la persona
public String nombre;
public String apellido;
public int edad;
public Persona() {
String nombre, apellido;
int edad;
}
public Persona(String nombre, String apellido, int edad) {
this.nombre = nombre;
this.apellido = apellido;
this.edad = edad;
}
}
Persona Civil extiende de Persona; y esta es mi clase PersonaCivil:
public class PersonaCivil extends Persona {
public static PersonaCivil conyuge = null;
private String dni;
public boolean getcasado() {
if (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() {
if (this.getcasado()){
return "nPersona:n Nombre y Apellido: " + nombre + " " + apellido + "n Edad: " + edad + "n DNI: " + getDni(this)+ "nn Conyuge:n Nombre y Apellido: " + conyuge.nombre + " " + conyuge.apellido + "n Edad: " + conyuge.edad + "n DNI: " + conyuge.getDni(conyuge);
}else{
return "nPersona:n Nombre y Apellido: " + nombre + " " + apellido + "n Edad: " +
edad + "n DNI: " + getDni(this) + "nn";
}
}
}
Luego para "casar personas" mi método es el siguiente:
public static void casar(String d1, String d2) {
//Escritura del conyuge de la primera PersonaCivil.
PersonaCivil p1 = obtenerPersona(d1);
p1.conyuge = obtenerPersona(d2);
p1.conyuge.setDni(d2);
//Escritura del conyuge de la segunda PersonaCivil.
PersonaCivil p2 = obtenerPersona(d2);
p2.conyuge = obtenerPersona(d1);
p2.conyuge.setDni(d1);
}
El problema creo que esta en algun this o alguna referencia pero bueno tu supongo que debes saber más que yo asà que te leo.
import java.io.*;
public class Persona {
//Atributos de la persona
public String nombre;
public String apellido;
public int edad;
public Persona() {
String nombre, apellido;
int edad;
}
public Persona(String nombre, String apellido, int edad) {
this.nombre = nombre;
this.apellido = apellido;
this.edad = edad;
}
}
Persona Civil extiende de Persona; y esta es mi clase PersonaCivil:
public class PersonaCivil extends Persona {
public static PersonaCivil conyuge = null;
private String dni;
public boolean getcasado() {
if (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() {
if (this.getcasado()){
return "nPersona:n Nombre y Apellido: " + nombre + " " + apellido + "n Edad: " + edad + "n DNI: " + getDni(this)+ "nn Conyuge:n Nombre y Apellido: " + conyuge.nombre + " " + conyuge.apellido + "n Edad: " + conyuge.edad + "n DNI: " + conyuge.getDni(conyuge);
}else{
return "nPersona:n Nombre y Apellido: " + nombre + " " + apellido + "n Edad: " +
edad + "n DNI: " + getDni(this) + "nn";
}
}
}
Luego para "casar personas" mi método es el siguiente:
public static void casar(String d1, String d2) {
//Escritura del conyuge de la primera PersonaCivil.
PersonaCivil p1 = obtenerPersona(d1);
p1.conyuge = obtenerPersona(d2);
p1.conyuge.setDni(d2);
//Escritura del conyuge de la segunda PersonaCivil.
PersonaCivil p2 = obtenerPersona(d2);
p2.conyuge = obtenerPersona(d1);
p2.conyuge.setDni(d1);
}
El problema creo que esta en algun this o alguna referencia pero bueno tu supongo que debes saber más que yo asà que te leo.
El atributo conyuge no ha de ser estático, pq cada PersonaCivil tiene su conyuge. Al ser estático al modificar el de una persona cualquiera modificas el de todos... :
public static PersonaCivil conyuge = null; //MAL
public PersonaCivil conyuge = null; //BIEN
A parte yo cambiarÃa el método
public String getDni(PersonaCivil pers) {
return this.dni;
}
por:
public String getDni() {
return this.dni;
}
ya que no utilizas para nada el parámetro (PersonaCivil pers)
y el método casar lo dejarÃa como te he dicho en mi primer comentario para evitar código redundante que no hace nada.
Me debes una cerveza
public static PersonaCivil conyuge = null; //MAL
public PersonaCivil conyuge = null; //BIEN
A parte yo cambiarÃa el método
public String getDni(PersonaCivil pers) {
return this.dni;
}
por:
public String getDni() {
return this.dni;
}
ya que no utilizas para nada el parámetro (PersonaCivil pers)
y el método casar lo dejarÃa como te he dicho en mi primer comentario para evitar código redundante que no hace nada.
Me debes una cerveza