Autor Tema: ArrayList de miles de objetos aleatorios recorrer con iterator en BlueJ CU00920C  (Leído 2304 veces)

Luis Fdo Carvajal

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Buenos días. Ejercicio CU00920C del tutorial de programación Java avanzado.

El código, Saludos
Código: [Seleccionar]
package cuadrupedo;

/**
 *
 * @author itco1724
 */
public class Cuadrupedo {

    private String especie;
    private int ID;
   
   
   
 public Cuadrupedo (int ID, String especie){
   
    this.especie = especie;
    this.ID = ID;
    }   
   
  @Override
    public String toString() {
         return " CUADRUPEDO -->: ID" + ID + " " + "Tipo: "+ especie;}
   
     public String getEspecie() {return especie;}
     public int getID() {return ID;}
   
}//Cierre de la clase

Código: [Seleccionar]
package cuadrupedo;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;

/**
 *
 * @author itco1724
 */
public class TestCuadrupedo {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
        List<Cuadrupedo> cp = new ArrayList<Cuadrupedo>();
        String[] Cuadrupedos = {"Elefante", "Perro", "Gato", "Leon"};

            Random r = new Random();
            Cuadrupedo temp = null;
            String tipoCuadrupedo;
            int numeroLeones = 0;
            int numeroGatos = 0;
            int numeroPerros = 0;
            int numeroElefantes = 0;


     for(int i=0;i<10001;i++) {       
//generar enteros al azar entre dos límites DESDE , HASTA, ambos incluidos:
         
         cp.add(new Cuadrupedo(i,Cuadrupedos[r.nextInt((0)+4)]));}
     
            Iterator<Cuadrupedo> it = cp.iterator();

     while(it.hasNext()){

            temp = it.next();
            //System.out.println(temp);
            tipoCuadrupedo = temp.getEspecie();
           
            switch (tipoCuadrupedo){
                 case "Elefante":
                    numeroElefantes ++;
                    break;
                 case"Perro":
                    numeroPerros ++;
                    break;
                 case "Gato":
                    numeroGatos ++;
                    break;
                 case "Leon":
                    numeroLeones++;
                    break;
            }
           
            //SeleccioN animales con id múltiplo de 1000
            if (temp.getID()%1000 == 0 ){
            System.out.println(temp);}
            }

            System.out.println("Hay " + numeroLeones + " Leones,"+numeroGatos + " Gatos," + numeroPerros + " Perros y " + numeroElefantes + " Elefantes");
      }

}

« Última modificación: 21 de Junio 2017, 18:08 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Luis Fdo Carvajal

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

El enunciado pedía generar 10000 objetos de tipo Cuadrupedo

Con el bucle for(int i=0;i<10001;i++)  estás generando 10001 objetos. Debes tener claro el manejo de bucles e índices. El índice 0 constituye el primer elemento. Luego has definido ir del 1 al 10000. Total tienes 1 + 10000 = 10001 objetos, que no es exactamente lo que pedía el ejercicio.

Una ejecución de tu código da por ejemplo

 CUADRUPEDO -->: ID0 Tipo: Gato
 CUADRUPEDO -->: ID1000 Tipo: Perro
 CUADRUPEDO -->: ID2000 Tipo: Elefante
 CUADRUPEDO -->: ID3000 Tipo: Leon
 CUADRUPEDO -->: ID4000 Tipo: Elefante
 CUADRUPEDO -->: ID5000 Tipo: Gato
 CUADRUPEDO -->: ID6000 Tipo: Leon
 CUADRUPEDO -->: ID7000 Tipo: Gato
 CUADRUPEDO -->: ID8000 Tipo: Elefante
 CUADRUPEDO -->: ID9000 Tipo: Elefante
 CUADRUPEDO -->: ID10000 Tipo: Leon
Hay 2568 Leones,2497 Gatos,2454 Perros y 2482 Elefantes


Sumamos
2568
2497
2454
2482
--------------
10001

La expresión r.nextInt((0)+4) no parece adecuada, ya que r.nextInt(4) es lo mismo pero más claro.

Lo demás todo bien

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