Foros del Web » Programación para mayores de 30 ;) » Java »

Insertar elemento creado en una clase desde otra.

Estas en el tema de Insertar elemento creado en una clase desde otra. en el foro de Java en Foros del Web. El objetivo del código que estoy creando, es en la clase "Animal": -Variable que almacenará el nombre del animal. -Variable que almacenará el país de ...
  #1 (permalink)  
Antiguo 17/02/2014, 10:38
 
Fecha de Ingreso: diciembre-2013
Mensajes: 36
Antigüedad: 5 años, 6 meses
Puntos: 1
Pregunta Insertar elemento creado en una clase desde otra.

El objetivo del código que estoy creando, es en la clase "Animal":
-Variable que almacenará el nombre del animal.
-Variable que almacenará el país de origen del animal.
-Variable que almacenará el peso del animal.
-Variable que almacenará la edad del animal.

-Función que devuelve el nombre del animal.
-Función que devuelve el país de origen del animal.
-Función que devuelve el peso del animal.
-Función que devuelve la edad del animal.


En la clase "Zoologico":
-Variable vector que almacenará objetos del tipo animal.

-Constructor. Crea el vector v (en un inicio el vector ira vacío).
-Procedimiento que añade un elemento del tipo animal al vector v.
-
Iré añadiendo nuevas condiciones de esta clase.

Lo que me marea es que se crea el objeto en un sitio y en otro se llene y añade. El código que tengo hecho es el siguiente. ¿Por ahora, mi código cumple lo que se pide? Gracias.

CLASE ANIMAL:
Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package zoo;

/**
 *
 * @author User
 */
public class Animal {
    
    String nombre, pais;
    double peso;
    int edad;
    
    public Animal(){
        this.nombre="";
        this.pais="";
        this.peso=0.00;
        this.edad=0;
    }
    
    public Animal(String nom, String pais, double peso, int edad){
        this.nombre=nom;
        this.pais=pais;
        this.peso=peso;
        this.edad=edad;
    }
    
    /*----------GETS-SETS----------*/

    public String getNombre() {
        return nombre;
    }

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

    public String getPais() {
        return pais;
    }

    public void setPais(String pais) {
        this.pais = pais;
    }

    public double getPeso() {
        return peso;
    }

    public void setPeso(double peso) {
        this.peso = peso;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }
    /*------------------------------------------------------------------------*/
    
}
CLASE ZOOLOGICO:
Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package zoo;
import java.util.*;

/**
 *
 * @author User
 */
public class Zoologico {
    Vector v = new Vector (3/1);
    
    public Zoologico(){
    }
    
    public void anyadeAnimal(Animal a){
        v.addElement(a);
    }
    
}
CLASE APLICACIÓN:
Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package zoo;

import java.util.Scanner;

/**
 *
 * @author User
 */
public class Aplicacion {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner teclado=new Scanner(System.in);
        
        Zoologico zoo= new Zoologico();
        Animal a= new Animal();
        
        int op=-1, edad;
        String nombre, pais;
        double peso;
        
        /*--------MENU--------*/
        while (op!=0)
        {
            
            do{

System.out.println("\n"+"        MENU        ");
verMenu();
op=teclado.nextInt();


switch(op){

                case 1: zoo.anyadeAnimal(a);
                        break;

                case 2: ;
                        break;

                case 3: ;
                        break;

                case 4: ;
                        break;

                case 0: System.out.println("Se ha cerrado el programa.");
                        break;
    
default: System.out.println("Error" ); break;

}
}while(op!=0);
            
    }
        
    }
    public static void verMenu(){
         System.out.println("1.Añadir  Animal.");
         System.out.println("2.Borrar  Persona");
         System.out.println("3.Buscar  Persona");
         System.out.println("4.Mostrar Persona");
         System.out.println("0.Salir");
         
   }
}
  #2 (permalink)  
Antiguo 17/02/2014, 11:43
Avatar de floppy-dj  
Fecha de Ingreso: diciembre-2006
Ubicación: Huelva
Mensajes: 25
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Insertar elemento creado en una clase desde otra.

lo único que veo es que cada vez que metes, metes siempre el mismo animal.
yo quitaría la linea: Animal a= new Animal(); y la pondría en el case 1 de esta forma:

Código:
case 1:
           Animal a= new Animal();
           zoo.anyadeAnimal(a);
           break;
  #3 (permalink)  
Antiguo 19/02/2014, 08:48
 
Fecha de Ingreso: diciembre-2013
Mensajes: 36
Antigüedad: 5 años, 6 meses
Puntos: 1
Pregunta Respuesta: Insertar elemento creado en una clase desde otra.

Ahora el código lo tengo así: (¿porque me falla?)
Mensaje de error
Exception in thread "main" java.lang.NullPointerException
at zoo.Zoologico.anyadeAnimal(Zoologico.java:39)
at zoo.Aplicacion.main(Aplicacion.java:52)
Java Result: 1


Aplicación
Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package zoo;

import java.util.ArrayList;
import java.util.Scanner;

/**
 *
 * @author Joan
 */
public class Aplicacion {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner teclado=new Scanner(System.in);
        
        Zoologico zoo= new Zoologico();
        ArrayList <Animal> Bestario=new ArrayList<Animal>();
        
        int op=-1, edad;
        String nombre, pais;
        double peso;
        
        /*--------MENU--------*/
        while (op!=0)
        {
            
            do{

System.out.println("\n"+"        MENU        ");
verMenu();
op=teclado.nextInt();


switch(op){

                case 1: Animal a= new Animal();
                
                        /*System.out.println("Introduce el nombre.");
                        a.nombre=teclado.next();
                        System.out.println("Introduce el pais.");
                        a.pais=teclado.next();
                        System.out.println("Introduce el peso.");
                        a.peso=teclado.nextDouble();
                        System.out.println("Introduce la edad.");
                        a.edad=teclado.nextInt();*/
                        zoo.anyadeAnimal(a);
                        break;

                case 2: zoo.mostrarAnimales(Bestario);
                        break;

                case 3: ;
                        break;

                case 4: ;
                        break;

                case 0: System.out.println("Se ha cerrado el programa.");
                        break;
    
default: System.out.println("Error" ); break;

}
}while(op!=0);
            
    }
        
    }
    public static void verMenu(){
         System.out.println("1.Añadir  Animal.");
         System.out.println("2.Borrar  Persona");
         System.out.println("3.Buscar  Persona");
         System.out.println("4.Mostrar Persona");
         System.out.println("0.Salir");
         
   }
}
Zoológico
Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package zoo;
import java.util.*;

/**
 *
 * @author Joan
 */
public class Zoologico {
    //Vector v = new Vector (3/1);
    ArrayList <Animal> Bestario;
    
    public Zoologico(){
    }
    
    public void anyadeAnimal(Animal a){
        Animal ficha;
        ficha=new Animal();
        //v.addElement(a);
        
        Scanner leer = new Scanner(System.in);

        System.out.println("Introduce su nombre: ");
        ficha.nombre=leer.nextLine();
        
        System.out.println("Introduce su país de procedencia: ");
        ficha.pais=leer.nextLine();
        
        System.out.println("Introduce su peso: ");
        ficha.peso=leer.nextDouble();
        
        System.out.println("Introduce su edad:");
        ficha.edad=leer.nextInt();

        
        Bestario.add(ficha);
    }
    
    public static void mostrarAnimales(ArrayList <Animal> Bestario){
        int i=0;

        Iterator it = Bestario.iterator(); //Porque utilizar esto --> http://goo.gl/EfvDx0
        if (!it.hasNext())
            System.out.println("No Hay Contactos en La Agenda."+"\n");
        else
         while (it.hasNext())
         {
            it.next();
            System.out.println("Contacto: " +(i+1)                      +"\n"+
                               "Nombre:   " +Bestario.get(i).nombre    +"\n"+
                               "Pais: " +Bestario.get(i).pais +"\n"+
                               "Peso: " +Bestario.get(i).peso +"\n"+
                               "Edad: " +Bestario.get(i).edad  +"\n\n");
            i++;
         }
    }
    
}
Animal:
Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package zoo;

/**
 *
 * @author User
 */
public class Animal {
    
    String nombre, pais;
    double peso;
    int edad;
    
    public Animal(){
        this.nombre="";
        this.pais="";
        this.peso=0.00;
        this.edad=0;
    }
    
    public Animal(String nom, String pais, double peso, int edad){
        this.nombre=nom;
        this.pais=pais;
        this.peso=peso;
        this.edad=edad;
    }
    
    /*----------GETS-SETS----------*/

    public String getNombre() {
        return nombre;
    }

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

    public String getPais() {
        return pais;
    }

    public void setPais(String pais) {
        this.pais = pais;
    }

    public double getPeso() {
        return peso;
    }

    public void setPeso(double peso) {
        this.peso = peso;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }
    /*------------------------------------------------------------------------*/
    
}
  #4 (permalink)  
Antiguo 19/02/2014, 11:54
Avatar de Ricardo88  
Fecha de Ingreso: febrero-2014
Ubicación: Cuba
Mensajes: 2
Antigüedad: 5 años, 4 meses
Puntos: 0
De acuerdo Respuesta: Insertar elemento creado en una clase desde otra.

amigo, lo que pasa es que en la clase Zoologico no incias al arrays, haslo en el constructor, o sea,
public Zoologico() {
Bestario = new ArrayList<>();
}
debe funcionarte ya



Saludos....
  #5 (permalink)  
Antiguo 19/02/2014, 12:39
 
Fecha de Ingreso: diciembre-2013
Mensajes: 36
Antigüedad: 5 años, 6 meses
Puntos: 1
Pregunta Respuesta: Insertar elemento creado en una clase desde otra.

Gracias por la ayuda. Pero habiéndose insertado el "animal" en el ArrayList, luego en el método para mostrar no encuentra nada.

Este es el método:

Código:
public static void mostrarAnimales(ArrayList <Animal> Bestario){
        int i=0;

        Iterator it = Bestario.iterator(); //Porque utilizar esto --> http://goo.gl/EfvDx0
        if (!it.hasNext())
            System.out.println("No Hay Animales en el registro."+"\n");
        else
         while (it.hasNext())
         {
            it.next();
            System.out.println("Animal nº: " +(i+1)                      +"\n"+
                               "Nombre:   " +Bestario.get(i).nombre    +"\n"+
                               "Pais: " +Bestario.get(i).pais +"\n"+
                               "Peso: " +Bestario.get(i).peso +"\n"+
                               "Edad: " +Bestario.get(i).edad  +"\n\n");
            i++;
         }
    }
Descargar el código:
>> http://goo.gl/gOh26l <<

Etiquetas: clase, creado, elemento, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:09.