Autor Tema: Crear iterador (iterator) en Java implementar interface ejemplo códido CU00919C#  (Leído 1905 veces)

fmartinez25

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Hola a todos. Dejo aquí mi solución al ejercicio CU00919C del curso gratuito de Java avanzado para que la comentéis y me ayudéis a mejorarla. En ella he implementado una clase EntradaTeclado para pedir la entrada de datos int por teclado y así evitar que el programa se interrumpa al no introduir un valor no entero.


Clase Animal

Código: [Seleccionar]
package cu00919c.ejercicio;

public class Animal {
    private String especie, nombre;
    private double peso;
    private int patas;
   
    public Animal(String especie, String nombre, double peso, int patas){
        this.especie=especie;
        this.nombre=nombre;
        this.peso=peso;
        this.patas=patas;
    }
    public void setEspecie(String e){especie=e;}
    public void setNombre(String n) {nombre=n;}
    public void setPeso(double p){peso=p;}
    public void setPatas(int patas){this.patas=patas;}
    public String getEspecie(){return especie;}
    public String getNombre(){return nombre;}
    public double getPeso(){return peso;}
    public int getPatas(){return patas;}
    @Override
    public String toString(){
        return "Especie: "+especie+", Nombre: "+nombre+", peso: "+peso+" kg, patas: "+patas;
    }
}


Clase ListaDeAnimales

Código: [Seleccionar]
package cu00919c.ejercicio;

import java.util.ArrayList;
import java.util.Iterator;

public class ListaDeAnimales {
    private ArrayList<Animal> lista=null;
   
    public ListaDeAnimales(){lista=new ArrayList<Animal>();}
   
    public void addAnimal(Animal a){lista.add(a);}
   
    public ArrayList<Animal> getLista(){return lista;}
   
    public int size(){return lista.size();}
    public void remove(int i){lista.remove(i);}
   
    public Iterator<Animal> iterator(){return new Iterador();}
   
   
    public void imprimir(){
        Iterator<Animal> it = lista.iterator();
        int numero=1;
        while(it.hasNext()){
            System.out.print(it.next()+", número "+numero+"\n");
            numero++;
        }

    }
   
    protected class Iterador implements Iterator<Animal>{
        public int posicion=0;
        public boolean eliminable=false;
        @Override
        public boolean hasNext(){return posicion<lista.size();}
        @Override
        public Animal next(){
            Animal animal=lista.get(posicion);
            posicion++;
            eliminable=true;
            return animal;
        }
        @Override
        public void remove(){
            if(eliminable){
                lista.remove(posicion-1);
                posicion--;
                eliminable=false;
            }
        }
    }
   
}


Clase EntradaTeclado

Código: [Seleccionar]
package cu00919c.ejercicio;
import java.util.Scanner;
import java.util.InputMismatchException;

public class EntradaTeclado {
    Scanner sc;
    EntradaTeclado(){}
   
    public int entero(){
        sc=new Scanner(System.in);
        int numero;
        try{numero=sc.nextInt();}
        catch(InputMismatchException e){
            System.out.print("Entrada no válida. ");
            return 0;
        }
        return numero;
    }
}


Clase principal

Código: [Seleccionar]
package cu00919c.ejercicio;

public class CU00919CEjercicio {

    public static void main(String[] args) {
        int numero=0;
        EntradaTeclado entrada=new EntradaTeclado();
        ListaDeAnimales lista=new ListaDeAnimales();
        lista.addAnimal(new Animal("pantera","Penelope",98.55,4));
        lista.addAnimal(new Animal("loro amazónico","Juanito",3.67,2));
        lista.addAnimal(new Animal("perro gran danés","Artur",38.77,4));
        lista.addAnimal(new Animal("mono de Tanzania","Monk",55.32,2));
       
        System.out.println("Los animales de la lista son:");
        lista.imprimir();
        do{
        System.out.print("\n¿Qué número desea eliminar?: ");
        numero=entrada.entero();
        if(numero<1||numero>lista.size()){System.out.println("Debe introducir un número entre 1 y "+lista.size());}
        }while(numero<1||numero>lista.size());
        lista.remove(numero-1);
        System.out.println("Los animales de la lista son:");
        lista.imprimir();       
    }   
}

Gracias a todos.
« Última modificación: 07 de Junio 2018, 19:25 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas, desde mi punto de vista el código cumple perfectamente con lo que se requería en el ejercicio y está bien estructurado y planteado.

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".