Autor Tema: Implementar iterador Java método next y remove ejemplo interface CU00919C  (Leído 3207 veces)

Erik_Escriche

  • Principiante
  • **
  • Mensajes: 65
    • Ver Perfil
Buenas a todos.

Esta es mi solución al ejercicio de la entrega CU00919C del curso Lenguaje de Programación Java Nivel Avanzado I.

Citar
Crea una clase denominada Animal con los atributos especie (String), nombre (String), peso (double) y patas (int).

Crea una clase ListaDeAnimales que permita crear una colección de animales y que permita el recorrido de la colección usando un iterador.

Crea una clase con el método main donde se introduzcan 4 animales en la lista y se muestren por pantalla usando el iterador e indicando el número que ocupan en la lista y el total de animales en la lista.

Tras esto, debe solicitarse al usuario que indique un número de la lista a eliminar. Usando el método remove() debe eliminarse ese animal de la lista y volver a mostrarse la lista indicando el nuevo número que ocupa cada animal en la lista y el total de animales en la lista.

Clase Animal.
Código: [Seleccionar]
package javaAvanzado;
public class Animal {
    //Atributos.
    private String especie;
    private String nombre;
    private double peso;
    private int patas;
    //Constructor.
    public Animal (String especie, String nombre, double peso, int patas) {
        this.especie=especie;
        this.nombre=nombre;
        this.peso=peso;
        this.patas=patas;
    }
    //Setters y getters.
    public void setEspecie (String especie) {this.especie=especie;}
    public void setNombre (String nombre) {this.nombre=nombre;}
    public void setPeso (double peso) {this.peso=peso;}
    public void setPatas (int patas) {this.patas=patas;}
    public String getEspecie() {return especie;}
    public String getNombre() {return nombre;}
    public double getPeso() {return peso;}
    public double getPatas() {return patas;}
    @Override
    public String toString() {
        return "Especie: "+especie+". Nombre: "+nombre+". Peso: "+peso+". Patas: "+patas+".\n";
    }
}

Clase ListaAnimales.
Código: [Seleccionar]
package javaAvanzado;
import java.util.ArrayList;
import java.util.Iterator;
public class ListaAnimales {
    //Atributo.
    private ArrayList<Animal> listaAnimales;
    //Constructor.
    public ListaAnimales () {listaAnimales= new ArrayList<Animal> ();}
    //Métodos.
    public Animal getAnimal(int lugar) {return listaAnimales.get(lugar);}
    public int getLongitud() {return listaAnimales.size();}
    public void addAnimal(Animal animal) {listaAnimales.add(animal);}
    @Override
    public String toString() {return listaAnimales.toString();}
    public Iterator<Animal> iterator() {return new MiIteradorListaAnimales();}
    //Clase Interna.
    public class MiIteradorListaAnimales implements Iterator<Animal> {
        //Atributos.
        protected int posicion;
        protected boolean sepuedeeliminar;
        //Constructor.
        public MiIteradorListaAnimales () {
            posicion=0;
            sepuedeeliminar=false;
        }
        //Método.
        public int getPosicion() {return posicion;}
        //Métodos sobrescritos.       
        @Override
        public boolean hasNext() {return posicion<listaAnimales.size();}
        @Override
        public Animal next() {Animal nextAnimal = listaAnimales.get(posicion);
            posicion++;
            sepuedeeliminar=true;
            return nextAnimal;}
        @Override
        public void remove() {if(sepuedeeliminar) {
            listaAnimales.remove(posicion-1);
            posicion--;
            sepuedeeliminar=false;}
        }
    }
}

Clase principal.
Código: [Seleccionar]
package javaAvanzado;
import java.util.Iterator;
import java.util.Scanner;
public class MainAnimal {
    public static void main (String [] args) {
        Scanner entrada= new Scanner(System.in);
        int respuesta;
        int contador = 1;
        ListaAnimales miLista = new ListaAnimales();
        miLista.addAnimal(new Animal("pantera", "Penélope", 98.55, 4));
        miLista.addAnimal(new Animal("loro", "Juan", 3.00, 2));
        miLista.addAnimal(new Animal ("perro", "Arthur", 37.66, 4));
        miLista.addAnimal(new Animal ("orangután", "Monje", 40.10, 2));       
        System.out.println ("Los animales de la lista son los siguientes: ");       
        Iterator<Animal> it;
        it = miLista.iterator();
        while (it.hasNext()) {
            Animal auxiliar = it.next();
            System.out.print ("Número "+(contador)+". "+auxiliar.toString());
            contador++;
        }
        System.out.println ("Número total de animales: "+miLista.getLongitud()+".");
        System.out.println ("¿A qué animal quieres sacar de la lista? Introduce el número.");
        respuesta = entrada.nextInt();       
        contador=1;
        Iterator <Animal> it2;
        it2= miLista.iterator();
        while(it2.hasNext()){
            Animal auxiliar = it2.next();       
            if (contador==respuesta) {it2.remove();}
            contador++;
        }
        System.out.println ("Los animales de la lista son los siguientes: ");
        contador=1;
        Iterator<Animal> it3;
        it3 = miLista.iterator();
        while (it3.hasNext()) {
            Animal auxiliar = it3.next();
            System.out.print ("Número "+(contador)+". "+auxiliar.toString());
            contador++;
        }
        System.out.println ("Número total de animales: "+miLista.getLongitud()+".");
    }
}       

¡Saludos!
« Última modificación: 02 de Enero 2017, 23:27 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Buenas lo veo buen código y ejercicio bien resuelto.

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".