Autor Tema: Java implementar iterador para una clase implements Iterable ejemplo CU00915C  (Leído 2584 veces)

Luis Fdo Carvajal

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Buenas noches,

Adjunto el ejercicio CU00915C del tutorial de programación Java avanzado.

Gracias

Código: [Seleccionar]
public class AvesEnZoo {
   
    public int numeroAves, numeroMachos, numeroHembras;
    public String tipoDeAve;

public AvesEnZoo( String tipoDeAve, int numeroAves, int numeroMachos, int numeroHembras ){
this.numeroAves = numeroAves; 
this.numeroMachos = numeroMachos;
this.numeroHembras = numeroHembras;
this.tipoDeAve = tipoDeAve;

    }   
public void setTipoDeAve(String tipoDeAve) {this.tipoDeAve = tipoDeAve;}
public void setnumeroAves(int numeroAves) {this.numeroAves = numeroAves;}
public void setnumeroMachos(int numeroMachos) {this.numeroMachos = numeroMachos;}
public void setnumeroHembras(int numeroHembras) {this.numeroHembras = numeroHembras;}
public String getTipoDeAve() {return tipoDeAve;}
public int getnumeroAves() {return numeroAves;}
public int getnumeroMachos() {return numeroMachos;}
public int getnumeroHembras() {return numeroHembras;}

@Override
    public String toString(){
        return tipoDeAve+"    "+numeroAves+"    "+numeroMachos+"    "+numeroHembras;
    }
}


Código: [Seleccionar]
import java.util.Iterator;
/**
 *
 * @author ITCO1724
 */
public class GruposDeAvesZoos implements Iterable<AvesEnZoo> {

    public AvesEnZoo[] gruposDeAves; // Atributo de la clase GrupoDeAvesZoos en base al cual se realiza la iteración.
   
    public GruposDeAvesZoos (AvesEnZoo [] p) { // Constructor de la clase, conjuntoAves y que este atributo es un array de Aves.
      gruposDeAves= p;   
    }


 
    public Iterator<AvesEnZoo> iterator() {
        Iterator it = new IteratorAvesEnZoo();
        return it;
    }
    protected class IteratorAvesEnZoo implements Iterator<AvesEnZoo> {

        protected int posicionarray;

        public IteratorAvesEnZoo() {
        posicionarray = 0;
    }
/*Un método hasNext() que devuelve un tipo booleano,comprobamos si nuestro índice posicionarray
 *ha llegado al final de la colección verificando si su valor ha alcanzado el número máximo de elementos *
 * posible
 */
    public boolean hasNext() {
            boolean result;
            if (posicionarray < gruposDeAves.length) {
                    result = true; }
            else {
                        result = false;
            }
            return result;
        }
   
/*Un método next() que devuelve el siguiente elemento dentro de la colección*/
       
    public AvesEnZoo next() {
            posicionarray++;
            return gruposDeAves[posicionarray-1];
        }
/*Este último no lo hemos implementado por simplicidad del ejemplo y
 * el código throw new UnsupportedOperationException("No soportado."); 
 * que lo implementa simplemente nos permite salir del paso, ya que no podemos dejar el
 * método sin sobreescribir al ser obligatorio.*/
   
        public void remove(){
            throw new UnsupportedOperationException("No soportado.");
        }
    }
}

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

/**
 *
 * @author ITCO1724
 */
public class Programa {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
 //objetos de la clase AvesEnZoo

        AvesEnZoo az1 = new AvesEnZoo("Aguilas",35,10,25);
        AvesEnZoo az2 = new AvesEnZoo("Buitres",100,55,45);
        AvesEnZoo az3 = new AvesEnZoo("Halcones",80,25,55);
   
        AvesEnZoo[] pp = {az1,az2,az3};       
       GruposDeAvesZoos cp = new GruposDeAvesZoos(pp);
       
       Iterator<AvesEnZoo> it1=cp.iterator();
        System.out.println("TIPO"+"\t"+"TOTAL"+"\t"+"MACHOS"+"\t"+"HEMBRAS"+"\n");
        while(it1.hasNext()){
            AvesEnZoo tmp=it1.next();           
            System.out.println(tmp.toString());
        }
    }   
}
« Última modificación: 19 de Junio 2017, 21:20 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Luis Fdo Carvajal veo el ejercicio bien resuelto

Por favor, si creas temas en el foro, ponle un título adecuado siguiendo las indicaciones que se dan en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Al compilar la clase GruposDeAvesZoos me aparece un mensaje de warning: ... uses unchecked or unsafe operations. Recompile wieth -Xlint:unchecked for details, deberías revisar por qué te sale este mensaje y si es posible, corregir el código

Saludos

 

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