Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: paramonso en 07 de Enero 2019, 09:18
-
Hola dejo el ejercicio CU00915C del curso avanzado de programación Java de aprenderaprogramar. Interface Iterable y método Iterator (API Java). Recorrer colecciones. Ejercicio y ejemplo resuelto
Crea una clase denominada AvesEnZoo con 4 atributos. Uno será de tipo String (tipoDeAve) y los otros tres serán de tipo int (numeroAves, numeroMachos, numeroHembras).
Crea una clase GruposDeAvesZoos que implemente la interface Iterable. Crea varios objetos de tipo AvesEnZoo y añádelos a un objeto GruposDeAvesEnZoos. Utilizando un iterador, muestra los datos de los objetos presentes en el objeto GruposDeAvesZoos.
Clase AvesEnZoo
public class AvesEnZoo {
public String tipoDeAve;
public int numeroAves, numeroMachos, numeroHembras;
public AvesEnZoo(String tAve,int nAves, int nMachos, int nHembras)
{
this.tipoDeAve= tAve;
this.numeroAves =nAves ;
this.numeroMachos=nMachos;
this.numeroHembras=nHembras;
}
}
Clase GruposDeAvesZoo
import java.util.Iterator;
/* Ejemplo interface Iterable aprenderaprogramar.com */
public class GruposDeAvesZoo implements Iterable<AvesEnZoo>{
public AvesEnZoo[] gruposDeAvesZoo; // Atributo de la clase
public GruposDeAvesZoo (AvesEnZoo [] aves) {
// Constructor de la clase
gruposDeAvesZoo = aves;
}
public Iterator<AvesEnZoo> iterator() {
Iterator it = new MiIteratorAves();
return it;
}
protected class MiIteratorAves implements Iterator<AvesEnZoo> {
protected int posicionarray;
public MiIteratorAves() {
posicionarray = 0;
}
public boolean hasNext() {
boolean result;
if (posicionarray < gruposDeAvesZoo.length) { result = true; }
else { result = false; }
return result;
}
public AvesEnZoo next() {
posicionarray++;
return gruposDeAvesZoo[posicionarray-1];
}
public void remove(){
throw new UnsupportedOperationException("No soportado.");
}
}
}
Modulo de la clase TestIterator
import java.util.Iterator;
public class TestsIterator {
public static void main(String arg[]) {
AvesEnZoo ave1 = new AvesEnZoo("Avestruz",15,5,10);
AvesEnZoo ave2 = new AvesEnZoo("Aguila ",5,3,2);
AvesEnZoo ave3 = new AvesEnZoo("Pato ",55,35,20);
AvesEnZoo ave4= new AvesEnZoo("Alcon ",10,3,7);
AvesEnZoo[] aves = {ave1,ave2,ave3,ave4};
GruposDeAvesZoo grupoAves = new GruposDeAvesZoo(aves);
System.out.println("|TIPO |TOTAL|MACHOS|HEMBRAS|");
System.out.println("|---------|-----|------|-------|");
for (AvesEnZoo ab : grupoAves) // Esto es un for extendido o for-each
{
System.out.printf("|%s |%5d|%6d|%7d|\n",ab.tipoDeAve,ab.numeroAves,ab.numeroMachos,ab.numeroHembras);
System.out.println("|---------|-----|------|-------|");
}
}
}
Gracias. ;)
-
Buenas, para quien revise este ejercicio, está bien resuelto. Además, en la clase test tiene un ejemplo de cómo generar una salida formateada en columnas por pantalla. En concreto un fragmento que será interesante para quien esté buscando un ejemplo sobre cómo hacer esto:
System.out.println("|TIPO |TOTAL|MACHOS|HEMBRAS|");
System.out.println("|---------|-----|------|-------|");
for (AvesEnZoo ab : grupoAves) // Esto es un for extendido o for-each
{
System.out.printf("|%s |%5d|%6d|%7d|\n",ab.tipoDeAve,ab.numeroAves,ab.numeroMachos,ab.numeroHembras);
System.out.println("|---------|-----|------|-------|");
}
Salu2