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: Jobemar en 05 de Mayo 2020, 07:09

Título: Interface List del api java. Clase ArrayList, LinkedIn, Stack, Vector CU00920C
Publicado por: Jobemar en 05 de Mayo 2020, 07:09
Saludos dejo acá mi código para el ejercicio CU00920C del tutorial de programación Java avanzado con ejercicios resueltos.


Clase Cuadrupedo

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

public class Cuadrupedo {

    public static final String[] animal = {"Leon", "Gato", "Perro", "Elefante"};
    private final Random rdm;
    private final int id;
    private final String tipo;
    private static int i = 1;

    public Cuadrupedo() {
        rdm = new Random();
        tipo = animal[rdm.nextInt(animal.length)];
        id = i;
        i++;
    }

    public int getId() {
        return id;
    }

    public String getTipo() {
        return tipo;
    }

    @Override
    public String toString() {
        return "Cuadrupedo -> ID: " + id + " Tipo: " + tipo;
    }
}



Clase Main

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

public class Main {

    public static void main(String[] args) {
        // TODO code application logic here
        int cantidadCuadrupedos;
        cantidadCuadrupedos = 10000;
        List<Cuadrupedo> list = new ArrayList<Cuadrupedo>();
        int cantidadAnimales = Cuadrupedo.animal.length;
        int[] animalesPorTipo = new int[cantidadAnimales];
        for (int i = 0; i < 10000; i++) {
            list.add(new Cuadrupedo());
        }
        int k = 0;
        while (k < cantidadCuadrupedos) {
            for (Cuadrupedo c : list) {
                if (c.getId() % 1000 == 0 && c.getId() > 0) {
                    System.out.println(c);
                }
                if (c.getTipo().equals(Cuadrupedo.animal[k])) {
                    animalesPorTipo[k] += 1;
                }
            }
            k++;
        }
        System.out.print("Resumen: hay ");
        for (int j = 0; j < animalesPorTipo.length; j++) {
            if (j == animalesPorTipo.length - 1) {
                System.out.print(animalesPorTipo[j] + "  " + Cuadrupedo.animal[j] + "s. ");
            } else {
                System.out.print(animalesPorTipo[j] + "  " + Cuadrupedo.animal[j] + "s, ");
            }
        }
     }
}

Título: Re:Interface List del api java. Clase ArrayList, LinkedIn, Stack, Vector CU00920C
Publicado por: Ogramar en 30 de Septiembre 2020, 20:03
Buenas, para quien revise este código, cumple correctamente con lo que se pedía en el ejercicio y además lo hace de una forma original respecto a los ejemplos del propio curso y respecto a otras soluciones de los foros.

Invito a quien tenga interés a comparar este código con otra solución existente en los foros disponible en https://aprenderaprogramar.com/foros/index.php?topic=6155.0

Es interesante ver cómo se declaran atributos estáticos y/o constantes; la invocación con notación de punto de atributos estáticos; el uso del constructor para crear el tipo de animal de forma aleatoria y el uso de un atributo estático para contar el número de cuadrúpedos creados, etc.

Lo dicho, quien tenga interés que revise el código, porque merece la pena ver las ideas que contiene.

Salu2