Autor Tema: Java Avanzado Ejercicio CU00919C Interface Iterator api java hasNext remove  (Leído 72 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 249
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola dejo el ejercicio de java Avanzado CU00919C Interface Iterator api java hasNext remove 

Clase Animal
Código: [Seleccionar]
/**
 * Write a description of class a here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Animal
{
    // instance variables - replace the example below with your own
     private String especie;
     private String nombre;
     private double peso;
     private int patas;
    //Constructores
   
   
    public Animal(String especie, String nombre,double peso, int patas)
    {
    this.especie=especie;
    this.nombre=nombre;
    this.peso=peso;
    this.patas=patas;
    }
   
    //metodos get y set
    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 "Animal ==>: especie "+especie+" Nombre: "+nombre+" Peso: "+peso+" Patas: "+patas+"\n";
    }
}//Fin de la clase

Clase ListaDeAnimales
Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Iterator;

public class ListaDeAnimales {
    public ArrayList<Animal> listaAnimales = null;  // Campo de la clase
    public ListaDeAnimales() {listaAnimales= new ArrayList<Animal>();}  // Constructor de la clase
    public ArrayList<Animal> getListaDeAnimales(){return listaAnimales;} //Omitimos otros métodos
    public Iterator<Animal> iterator() {return new MiIteradorListaAnimales();} // Método de la clase

    @Override
    public String toString() {return listaAnimales.toString();}  // Método de la clase

    protected class MiIteradorListaAnimales implements Iterator<Animal>  // Clase interna
    {
        public int posicion = 0;    public boolean sepuedeeliminar = false;  // Campos
       
        @Override
        public boolean hasNext() {return posicion < listaAnimales.size();}  // Método
       
        @Override
        public Animal next() {  // Método
           Animal res = listaAnimales.get(posicion); // Creamos un objeto Animal igual al que recorremos
            posicion ++;
            sepuedeeliminar = true;
            return res;}
       
        @Override
        public void remove() {
            if (sepuedeeliminar) {
                listaAnimales.remove(posicion-1);
                posicion--;
                sepuedeeliminar = false; }
        } // Cierre del método remove
    } // Cierre de la clase interna
}  // Cierre de la clase

Clase Programa
Código: [Seleccionar]
import java.util.Iterator;
import java.util.Scanner;
public class Programa {
   
    public static void main(String arg[]) {
        ListaDeAnimales la = new ListaDeAnimales();
        iniciarLista(la);
        presentarLista(la);
        numeroAnimalEliminar(la);
       }

    public static void iniciarLista(ListaDeAnimales la){
        la.getListaDeAnimales().add(new Animal("Pantera         ","Penelope",98.55,4));
        la.getListaDeAnimales().add(new Animal("Loro Amazonico  ","Juanito ",3.67,2));
        la.getListaDeAnimales().add(new Animal("Perro Gran Danes","Artur   ",38.77,4));
        la.getListaDeAnimales().add(new Animal("Mono de Tanzania","Monk    ",55.32,4));
    }

    public static void presentarLista(ListaDeAnimales la){
        Iterator<Animal> it;
        Animal e; // Este objeto lo usaremos para almacenar temporalmente objetos Animal
         System.out.println("Los animales en la lista son: " );
        System.out.print("Numero Especie            Nombre  \tPeso  Patas\n");
        it = la.iterator();
        int i=1;
        while (it.hasNext() ) {
            e = it.next();
            System.out.print( "  " +(i++)+"\t"+
                            e.getEspecie()+"  "+
                            e.getNombre()+"\t"+
                            e.getPeso()+"\t"+
                            e.getPatas()+"\n");

        }
    }
    public static void numeroAnimalEliminar(ListaDeAnimales la){
    Scanner x = new Scanner (System.in);    //Creación de un objeto Scanner
        String scTeclado;
        //Convertir cadena a numero entero
        int numEliminar=0;
        while(numEliminar<1 || numEliminar>4){
            System.out.print("Introduzca el numero de Animal a eliminar: ");
            scTeclado = x.nextLine ();
            numEliminar= Integer.parseInt(scTeclado);
            if(numEliminar<1 || numEliminar>4)
            {
                System.out.print(scTeclado+" Numero Erroneo ¡¡¡¡\n");
            }
            else{
               int i=1;
                Iterator<Animal> it2;
                 
                it2=la.iterator();
                while (it2.hasNext() ) {
                    Animal tmp=it2.next();
                    if (i==numEliminar) {
                         System.out.print( "\nAnimal a eliminar, Especie: "+
                            tmp.getEspecie()+", Nombre:  "+
                            tmp.getNombre()+", Peso: "+
                           tmp.getPeso()+", Nº Patas: "+
                            tmp.getPatas()+"\n\n");
                        it2.remove();
                    }
                    i++;
                }
            }   
        }
         presentarLista(la);
    }
}

Adios. ;)

 

Esto es un laboratorio de ideas...
Aprender a programar

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