Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Luis Fdo Carvajal en 23 de Mayo 2017, 19:45

Título: Java implementar iterador para una clase implements Iterable ejemplo CU00915C
Publicado por: Luis Fdo Carvajal en 23 de Mayo 2017, 19:45
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());
        }
    }   
}
Título: Re:Java implementar iterador para una clase implements Iterable ejemplo CU00915C
Publicado por: Alex Rodríguez en 19 de Junio 2017, 21:21
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