0

Estoy trabajando en la siguiente tarea: Este ejercicio es de una clase Familia, que se compone de un ArrayList de Persona y a su vez cada Persona tiene un Array de máximo 2 Mascotas. Necesito que el código imprima las mascotas de cada miembro de la familia y realice una búsqueda de quien es el dueño de la mascota "Bobby": Además modularizar en métodos como Imprimir y Agregar Mascota y Persona por separado. Ademas indicar si alguna Persona no tiene mascotas.

import org.w3c.dom.ls.LSOutput;

import java.util.ArrayList; import java.util.Arrays;

public class Main {

public static void main (String [] args){
    creaFamilia000();
}

public static void creaFamilia000(){
    Familia familia = new Familia("Perez Gonzalez");
    ArrayList<Persona> miembrosFamilia = new ArrayList<Persona>();
    String queMascota = "Bobby";
    //persona1
    Persona persona001 = new Persona("Juana",45);
    System.out.println("Existe la madre, " + persona001.getNombre());
    Mascota[] mascotas001 = new Mascota[2];
    Mascota mascota001 = new Mascota("Bobby");
    System.out.println("Ha adoptado la mascota " + mascota001.getNombre());
    Mascota mascota002 = new Mascota("Fido");
    System.out.println("Ha adoptado la mascota " + mascota002.getNombre());
    mascotas001[0] = mascota001;
    mascotas001[1] = mascota002;
    persona001.setListaDeMascotas(mascotas001);

    for(int i=0; i< mascotas001.length; i++){
        if(mascotas001[i].equals("Bobby")){
            System.out.println("El dueño es " + persona001.getNombre() );
        }
        else{
            System.out.println("Dueño no encontrado");
        }
    }
   /* if(Arrays.asList(mascotas001).contains("Bobby")){

        System.out.println("El dueño de " +queMascota+ "es : " + persona001.getNombre());
    }*/

    //persona2
    Persona persona002 = new Persona("Pedro",50);
    System.out.println("Existe el padre, " + persona002.getNombre());
    Mascota[] mascotas002 = new Mascota[2];

    persona002.setListaDeMascotas(mascotas002);
    System.out.println(persona002.getNombre() + " no tiene mascotas");

    for(int i=0; i< mascotas002.length; i++){
        if(mascotas002[i].equals("Bobby")){
            System.out.println("El dueño es " + persona002.getNombre() );
        }
        else{
            System.out.println("Dueño no encontrado");
        }
    }

    /*if(Arrays.asList(mascotas002).contains("Bobby")){

        System.out.println("El dueño de " +queMascota+ "es : " + persona002.getNombre());
    }  */



    //persona 3
    Persona persona003 = new Persona("Cristian", 14);
    System.out.println("Creado el hijo, " + persona003.getNombre());
    Mascota[] mascotas003 = new Mascota[2];
    Mascota mascota005 = new Mascota("Chip");
    System.out.println("Posee la mascota " + mascota005.getNombre());

    mascotas003[0] = mascota005;

    persona003.setListaDeMascotas(mascotas003);
    familia.setListaDeMiembros(miembrosFamilia);

    for(int i=0; i< mascotas003.length; i++){
        if(mascotas003[i].equals("Chip")){
            System.out.println("El dueño es " + persona003.getNombre() );
        }
        else{
            System.out.println("Dueño no encontrado");
        }
    }
    for(Persona persona: miembrosFamilia )
    {
        System.out.println(persona.getListaDeMascotas());
        System.out.println(familia.getNombreFamilia());
        System.out.println("*************************");
    }

import java.util.ArrayList;

public class Familia {

public String nombreFamilia;
public int numeroIntegrantes;
public ArrayList<Persona> listaDeMiembros;

public Familia(String nombreFamilia) {
    this.nombreFamilia = nombreFamilia;
}

public Familia(String nombreFamilia, int numeroIntegrantes) {
    this.nombreFamilia = nombreFamilia;
    this.numeroIntegrantes = numeroIntegrantes;
}

public Familia(String nombreFamilia, int numeroIntegrantes, ArrayList<Persona> listaDeMiembros) {
    this.nombreFamilia = nombreFamilia;
    this.numeroIntegrantes = numeroIntegrantes;
    this.listaDeMiembros = listaDeMiembros;
}

public String getNombreFamilia() {
    return nombreFamilia;
}

public void setNombreFamilia(String nombreFamilia) {
    this.nombreFamilia = nombreFamilia;
}

public int getNumeroIntegrantes() {
    return numeroIntegrantes;
}

public void setNumeroIntegrantes(int numeroIntegrantes) {
    this.numeroIntegrantes = numeroIntegrantes;
}

public ArrayList<Persona> getListaDeMiembros() {
    return listaDeMiembros;
}

public void setListaDeMiembros(ArrayList<Persona> listaDeMiembros) {
    this.listaDeMiembros = listaDeMiembros;
}

public Familia(ArrayList<Persona> listaDeMiembros) {
    this.listaDeMiembros = listaDeMiembros;
}

}

public class Persona {

String nombre;
int edad;
Mascota[] listaDeMascotas;

public Persona(String nombre, int edad, Mascota[] listaDeMascotas) {
    this.nombre = nombre;
    this.edad = edad;
    this.listaDeMascotas = listaDeMascotas;
}
public Persona(){}

public Persona(String nombre, int edad) {
    this.nombre = nombre;
    this.edad = edad;
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public int getEdad() {
    return edad;
}

public void setEdad(int edad) {
    this.edad = edad;
}

public Mascota[] getListaDeMascotas() {
    return listaDeMascotas;
}

public void setListaDeMascotas(Mascota[] listaDeMascotas) {
    this.listaDeMascotas = listaDeMascotas;
}

}

public class Mascota {

String nombre;
int edad;
String especie;

public Mascota(String nombre, String especie) {
    this.nombre = nombre;
    this.especie = especie;
}

public Mascota(String nombre, int edad, String especie) {
    this.nombre = nombre;
    this.edad = edad;
    this.especie = especie;
}

public Mascota(String nombre) {
    this.nombre = nombre;
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public int getEdad() {
    return edad;
}

public void setEdad(int edad) {
    this.edad = edad;
}

public String getEspecie() {
    return especie;
}

public void setEspecie(String especie) {
    this.especie = especie;
}

}

  • Si bien esta correcto poner el codigo, indica en que linea te origina el error – Juan Rivera Dec 23 '20 at 17:02
  • 1
    ¿Responde esto a tu pregunta? [¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?](https://es.stackoverflow.com/questions/42977/cu%c3%a1l-es-la-soluci%c3%b3n-a-todos-los-errores-nullpointerexception-presentes-pasados) – Benito-B Dec 23 '20 at 17:03
  • Output: Existe la madre, Juana // Ha adoptado la mascota Bobby // Ha adoptado la mascota Fido // Dueño no encontrado // Dueño no encontrado // Existe el padre, Pedro // Pedro no tiene mascotas // Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Object.equals(Object)" because "mascotas002[i]" is null at Main.creaFamilia000(Main.java:50) at Main.main(Main.java:9) Process finished with exit code 1 – A Human Gas Ball Dec 23 '20 at 17:06
  • @AHumanGasBall, mira el enlace que te puse... Es exactamente lo mismo. ***Solo existe un motivo*** para un NPE -> Has intentado utilizar un método de un objeto ANTES de crearlo. No hay más. Simplemente ve a la línea que te marca ahí, mira qué objeto estás usando y asegúrate de que existe ANTES de intentar usarlo. Y si está en un bucle y a veces habrá más mascotas y a veces menos, pon un `if mascotas002[i] != null` antes de hacer nada, así evitas intentar comparar un null con nada – Benito-B Dec 23 '20 at 17:07
  • Sabes, como newbie tengo una gran pregunta: Intentar pasar estas acciones a metodos : siguiendo el link que me mandaron (muy útil), me doy cuenta de que sale más ordenado modularizar cada acción. Pero aun me entra duda que otra forma tengo de generar un mensaje "campo vacio" si el array está en null, en vez de tirar una excepcion. No me convencen del todo las respuestas de llenar tal como dice ahí todo con try-catch y =!null. sugerencias – A Human Gas Ball Dec 23 '20 at 19:35

1 Answers1

0

Aquí un avance, pero por alguna razón tuve que usar Try Catch, hay problema con los índices.

Falta modularizar, me han indicado que esto va a fallar si el array fuera más grande.

import org.w3c.dom.ls.LSOutput;

import java.util.ArrayList; import java.util.Arrays;

public class Main {

public static void main (String [] args){
    creaFamilia000();
}

public static void creaFamilia000(){
    Familia familia = new Familia("Perez Gonzalez");
    ArrayList<Persona> miembrosFamilia = new ArrayList<Persona>();
    int i=0;

   //persona1
    Persona persona001 = new Persona("Juana",45);
    System.out.println("La persona, " + persona001.getNombre());
    Mascota[] mascotas001 = new Mascota[2];
    Mascota mascota001 = new Mascota("Bobby");
    System.out.println("Tiene la mascota:  " + mascota001.getNombre());
    Mascota mascota002 = new Mascota("Fido");
    System.out.println("Tiene la mascota:  " + mascota002.getNombre());
    mascotas001[0] = mascota001;
    mascotas001[1] = mascota002;
    persona001.setListaDeMascotas(mascotas001);
    familia.setListaDeMiembros(miembrosFamilia);

    i=0;
    try {
        if (mascotas001[i] != null) {
            for (i = 0; i < persona001.getListaDeMascotas().length; i++) {
                if (mascotas001[i].getNombre().equals("Bobby")) {
                    System.out.println("El dueño de Bobby es  " + persona001.getNombre());
                }
            }
        }
        else{
            System.out.println( persona001.getNombre() + " No tiene Mascotas");
        }
    }
    catch(Exception e){
        System.out.println("------------------------------------");
    }


   //persona2
    Persona persona002 = new Persona("Pedro",50);
    System.out.println("La persona, " + persona002.getNombre());
    Mascota[] mascotas002 = new Mascota[2];

    persona002.setListaDeMascotas(mascotas002);
    familia.setListaDeMiembros(miembrosFamilia);

    i=0;
    try {
        if (mascotas002[i] != null) {
            for (i = 0; i < persona002.getListaDeMascotas().length; i++) {
                if (mascotas002[i].getNombre().equals("Bobby")) {
                    System.out.println("El dueño de Bobby es  " + persona002.getNombre());
                }
            }
        }
        else{
            System.out.println( persona002.getNombre() + " No tiene Mascotas");
        }
    }
    catch(Exception e){
        System.out.println("------------------------------------");
    }


    //persona 3
    Persona persona003 = new Persona("Cristian", 14);
    System.out.println("La persona, " + persona003.getNombre());
    Mascota[] mascotas003 = new Mascota[2];
    Mascota mascota005 = new Mascota("Wrinkles");
    mascotas003[0] = mascota005;
    System.out.println("tiene la mascota:  " + mascota005.getNombre());

    persona003.setListaDeMascotas(mascotas003);
    familia.setListaDeMiembros(miembrosFamilia);


    i=0;
    try {
        if (mascotas003[i] != null) {
            for (i = 0; i < persona003.getListaDeMascotas().length; i++) {
                if (mascotas003[i].getNombre().equals("Bobby")) {
                    System.out.println("El dueño de Bobby es  " + persona003.getNombre());
                }
            }
        }
        else{
            System.out.println( persona003.getNombre() + " No tiene Mascotas");
        }
    }
    catch(Exception e){
        System.out.println("------------------------------------");
    }



    for(Persona persona: miembrosFamilia )
    {
        System.out.println(persona.getListaDeMascotas());
        System.out.println(familia.getNombreFamilia());
        System.out.println("*************************");
    }
    for(Persona persona: familia.getListaDeMiembros()){
        System.out.println(persona.getNombre());

    }
}

}