Foro de elhacker.net

Programación => Java => Mensaje iniciado por: portera en 27 Julio 2014, 21:40 pm



Título: Duda novato. Java
Publicado por: portera en 27 Julio 2014, 21:40 pm
Buenas, estoy haciendo ejercicios de Java y tengo una duda en uno.
Tengo como atributos una lista de pacientes y una lista de Set<String> que son las enfermedades de dichos pacientes. De forma que al paciente de la posicion i le corresponde el Set<String> de la posicion i de la lista de enfermedades.

En el ejercicio debo devolver el paciente con mas enfermedades dado un sexo. (siendo sexo propiedad de paciente).

El codigo que he implementado ha sido el siguiente:

   public Paciente pacienteConMasEnfermedades (Sexo s){
      
      for (int i=0; i<pacientes.size();i++){
            if(pacientes.get(i).getSexo().equals(s)){
               Integer cont = enfermedades.get(i).size();
               
               Paciente p = pacientes.get(i);
            }
            
         }
      }

      
      return p;
   }

El problema es que no sé como guardar el paciente con más enfermedades dado el sexo, pues lo que hago con este codigo es guardar el numero de enfermedades del paciente i.


Graciiias ;D ;D ;D


Título: Re: Duda novato. Java
Publicado por: yesod en 27 Julio 2014, 22:15 pm
¿Tienes algun Array con esos datos o como va el tema?

Dame mas datos a ver si te puedo saber responder a tu duda :D


Título: Re: Duda novato. Java
Publicado por: portera en 27 Julio 2014, 22:18 pm
Lo único que tengo son dos listas.

List <Paciente> pacientes;
List <Set<String>> enfermedades;

Y la relación entre ambos es la posición, es decir, que el paciente de la posicion 1 en pacientes le corresponde el Set<String> de la posicion 1 en enfermedades.

Espero que te sirva para ayudarme  :P :P


Título: Re: Duda novato. Java
Publicado por: yesod en 27 Julio 2014, 22:54 pm
Supongo que dentro del for que has usado para recorrer el string, tendras que poner alguna condición para que solo entren los que tengan x enfermedades...

Siento no ser de mucha ayuda, pero los Array los he tocado poco en general, he implementado mucho con Base de datos y con Archivos...pero los array en general solo los he usado para cargar archivos temporales desde la base de datos.

Te pongo un ejemplo a ver si te sirve:

Primero recorres el array de pacientes, buscando a todos los pacientes, luego dentro de este, recorres el array de enfermedades buscando el id de ese paciente y dentro de este último, pones un if con el número de enfermedades que tenga y, todo esto, lo metes en una variable.

algo mas visual.

Código
  1. for (int i=0; i<pacientes.size();i++){
  2.     if(pacientes.get(i).getSexo().equals(s)){
  3.            String NombrePaciente = paciente.get(i); --> //Aqui coges el nombre del paciente
  4.     }
  5. }
  6. for (int a=0; a<enfermedades.size(); a++){
  7.    if (enfermedades.get(a).equals(NombrePaciente)){
  8.           String Paciente = enfermedades.get(a); --> //Con esto consigues el número de enfermedades del paciente
  9.    }
  10. }
  11.  

Sería algo asi, solo quedaría (CREO) comparar PACIENTE con la cantidad de enfermedades que quieras sacar de ese paciente.

PD: No he probado el código, no se si funcionará asi o no, pero al menos es una idea de como debería ir :D Espero que te sirva


Título: Re: Duda novato. Java
Publicado por: portera en 29 Julio 2014, 10:04 am
Creo que así no puede ser. Porque el tipo Paciente tiene como propiedades el nombre, apellidos, sexo, seg social...
Y en la lista llamada enfermedades solo hay nombres de enfermedades guardados en un set, por lo tanto no lo puedo igualar al nombre del paciente.
Creo, y sólo lo creo, que la parte de código que he hecho es correcta, pero, no estoy segura.

Igualmente muchas gracias!!  ;D;D;D


Título: Re: Duda novato. Java
Publicado por: yesod en 29 Julio 2014, 14:03 pm
Si me dijiste que ambos arrays se comunican con un id del nombre del paciente, lo que tienes que hacer es sacar el id del nombre del paciente, luego comparar que ese id exista en el otro array y luego mediante ese id, sacar el numero o el nombre de las enfermedades que tiene ese paciente.

Código
  1. for (int i=0; i<pacientes.size();i++){
  2.    if(pacientes.get(i).getSexo().equals(s)){
  3.           String NombrePaciente = pacientes.get(i); --> //Aqui coges el nombre del paciente
  4.    }
  5. }
  6. for (int a=0; a<enfermedades.size(); a++){
  7.   if (enfermedades.get(a).equals(NombrePaciente)){
  8.          String Paciente = enfermedades.get(a); --> //Con esto consigues el número de enfermedades del paciente
  9.   }
  10. }
  11.  

Eso fue lo que te entendi yo por lo menos, comparando el id del paciente con el id del set, debes poder sacar el nombre de todas las enfermedades que tiene ese paciente, dame mas datos y te lo intento resolver