Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Luis Fdo Carvajal en 24 de Mayo 2017, 19:56
-
Buenos días. Ejercicio CU00920C del tutorial de programación Java avanzado.
El código, Saludos
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
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");
}
}
-
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