Autor Tema: Java cómo establecer un tipo dinámico distinto del tipo estático lista CU00920C  (Leído 1878 veces)

Pepote21

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 92
    • Ver Perfil
Hola a todos. Os paso mi código del ejercicio CU00920C del tutorial pdf de programación Java. Gracias. Un saludo.

Clase TipoDeCuadrupedo

Código: [Seleccionar]
public enum TipoDeCuadrupedo {
    LEON,PERRO,GATO,ELEFANTE
}


Clase Cuadrupedo

Código: [Seleccionar]
public class Cuadrupedo {
    private int idCuadrupedo;
    private String tipo; //León, Perro, Gato, Elefante
   
    public Cuadrupedo(){
        idCuadrupedo=0;
        tipo="";
    }
   
    public Cuadrupedo(int idCuadrupedo,String tipo){
        this.idCuadrupedo=idCuadrupedo;
        this.tipo=tipo;
    }
   
    public int getIdCuadrupedo(){
        return idCuadrupedo;
    }
   
    public String getTipoCuadrupedo(){
        return tipo;
    }
   
    @Override
    public String toString(){
        return "Cuadrupedo->ID: "+idCuadrupedo+" Tipo: "+tipo;
    }
   
    public void setTipusCuadrupedo(int tipus){
        switch(tipus){
            case 0:this.tipo=TipoDeCuadrupedo.LEON.toString();break;
            case 1:this.tipo=TipoDeCuadrupedo.PERRO.toString();break;
            case 2:this.tipo=TipoDeCuadrupedo.GATO.toString();break;
            case 3:this.tipo=TipoDeCuadrupedo.ELEFANTE.toString();break;
        }
    }
}


Clase ListaDeCuadrupedos

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

/**
 *
 * @author
 */
public class ListaDeCuadrupedos {
    private List<Cuadrupedo> listaCuadrupedos;
   
    public ListaDeCuadrupedos(){
        listaCuadrupedos=new ArrayList<Cuadrupedo>();
    }
   
    public List<Cuadrupedo> getLista(){return listaCuadrupedos;}
    public void addCuadrupedo(Cuadrupedo cuadrupedo){
        listaCuadrupedos.add(cuadrupedo);
    }
    public Iterator<Cuadrupedo> iterator() {
        return new MiIteradorListaCuadrupedos();
    }
   
    protected class MiIteradorListaCuadrupedos implements Iterator<Cuadrupedo>{ // Clase interna
        public int posicion = 0;
        public boolean sepuedeeliminar = false;
       
        @Override
        public boolean hasNext() {
            return posicion < listaCuadrupedos.size();
        }
       
        @Override
        public Cuadrupedo next() {
            Cuadrupedo res = listaCuadrupedos.get(posicion); // Creamos un objeto Cuadrupedo igual al que recorremos
            posicion ++;
            sepuedeeliminar = true;
            return res;
        }
       
        @Override
        public void remove() {
            if (sepuedeeliminar) {
                listaCuadrupedos.remove(posicion-1);
                posicion--;
                sepuedeeliminar = false; }
        }
    } // Cierre de la clase interna
}


Clase con el main

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

/**
 *
 * @author
 */
public class Principal {
    public static void main(String[]args){
        Cuadrupedo a=new Cuadrupedo();
        ListaDeCuadrupedos lista=new ListaDeCuadrupedos();
        Random rnd=new Random();
        int leones=0;
        int perros=0;
        int gatos=0;
        int elefantes=0;
        for(int i=0;i<10000;i++){
            a.setTipusCuadrupedo(rnd.nextInt(4));
            lista.addCuadrupedo(new Cuadrupedo(i,a.getTipoCuadrupedo()));
            if(a.getTipoCuadrupedo()=="LEON"){
                leones++;
            }else if(a.getTipoCuadrupedo()=="PERRO"){
                perros++;
            }else if(a.getTipoCuadrupedo()=="GATO"){
                gatos++;
            }else{
                elefantes++;
            }
        }
        Iterator<Cuadrupedo> it=lista.iterator();
        while(it.hasNext()){
            Cuadrupedo tmp=it.next();
            if (tmp.getIdCuadrupedo()%1000==0){ //multiplos de 1000
                System.out.println(tmp);
            }
        }
        System.out.println("Resumen: hay "+leones+" leones, "+perros+" perros, "+
                gatos+" gatos y "+elefantes+" elefantes");
    }
}
« Última modificación: 18 de Febrero 2018, 14:09 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Java. Interfaz List. Ejercicio CU00920C
« Respuesta #1 en: 18 de Febrero 2018, 14:07 »
Buenas Pepote21, código bien planteado. Hay distintas alternativas para resolver este ejercicio, no veo ninguna objeción a esta solución. Nota: repetir de nuevo, poner título a los temas según se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

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