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: Pepote21 en 06 de Noviembre 2017, 12:09

Título: Java cómo establecer un tipo dinámico distinto del tipo estático lista CU00920C
Publicado por: Pepote21 en 06 de Noviembre 2017, 12:09
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");
    }
}
Título: Re:Java. Interfaz List. Ejercicio CU00920C
Publicado por: Ogramar 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