Autor Tema: Java dar formato tabular salida de datos por pantalla en columnas tabla CU00915C  (Leído 6590 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
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

Citar
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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. ;)
« Última modificación: 09 de Octubre 2019, 20:52 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
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:

Código: [Seleccionar]
        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

 

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