Título: crear 5 objetos con caracteristicas ya definidas aleatoriamente
Publicado por: sheiking en 29 Octubre 2018, 00:12 am
ayuda quiero generar un programa que me genere 5 personajes (objetos) que tengas diferentes atributos aleatoriamente
en si este es el ejercicio Realiza un programa que incluya constructores, que genere cinco ayudantes, donde cada ayudante tiene características como: números de ojos (uno o dos), color de piel (amarilla o morada), altura (mediano o alto), un cierto nivel para crear objetos (1 al 5), un cierto nivel para arreglar cosas (1 al 5), un cierto nivel destructivo (1 al 5).
La cantidad de ayudantes necesarios ya ha sido definida, pero las características de cada uno deben ser establecidas al azar.
Al finalizar el programa, imprime la lista de los cinco ayudantes con sus características.
si alguien me puede ayudar estaria muy agradecido
por el momento llevo esto
public class Ayudantes { public int numOjos[] = {1,2}; public String colorPiel[] = {"morado","amarillo"}; public String altura[] = {"mediano","alto"}; public int nivelCrearObjetos[] = {1,2,3,4,5}; public int nivelArreglarCosas[] = {1,2,3,4,5}; public int nivelDestruccion[] = {1,2,3,4,5}; }
Título: Re: crear 5 objetos con caracteristicas ya definidas aleatoriamente
Publicado por: rub'n en 29 Octubre 2018, 01:29 am
Hola que tal?
Usa geshi, las variables de instancia deben ser declaradas por convención como private que es un modificador de acceso
(https://3.bp.blogspot.com/-O6qDroNEzts/W8sWHPnV3MI/AAAAAAAADJw/mypp_PTYxbA_uKr7E-O-x0epDjSUdk3mwCK4BGAYYCw/s1600/geshi.gif)
en la linea 22 usamos aquí la clase SecureRandom, para generar los números pseudoaleatorios con el método .nextInt()
entonces que es lo que esta pasando, si haces numOjos[un numero aleatorio aquí que será el 0 o el 1], gracias a nextInt()
que según la API dice esto
* @param bound the upper bound (exclusive). Must be positive. * @return the next pseudorandom, uniformly distributed {@code int} * value between zero (inclusive) and {@code bound} (exclusive) * from this random number generator's sequence * @throws IllegalArgumentException if bound is not positive * @since 1.2 */ public int nextInt(int bound) {
cuando haces nextInt(numOjos.length) en length retorna 2, y ese numero 2 se excluye, dando como resultado un numero entre el 0 y 1, sin decimales, y ese numero corresponde al subindice de ese array
e igualmente con un array de mayor tamaño como nivelArreglarCosas que consta de 5 posiciones, nextInt() en ese caso le tocaría un numero de entre 0 a 4 porque length retornara 5, pero este se excluye por lo tanto seria 4;
por lo tanto nivelArreglarCosas[secureRandom.nextInt(nivelArreglarCosas.length)] se podría traducir a nivelArreglarCosas[numero aleatorio entre 0 a 4] :o
package foro; import java.security.SecureRandom; import java.util.Arrays; import java.util.stream.IntStream; public class Ayudantes { private int numOjos[] = {1,2}; private String colorPiel [] = {"morado", "amarillo"}; private String altura [] = {"mediano", "alto"}; private int nivelCrearObjetos[] = {1,2,3,4,5}; private int nivelArreglarCosas[] = {1,2,3,4,5}; private int nivelDestruccion[] = {1,2,3,4,5}; public Ayudantes() { } @Override return "Ayudante {" + "numOjos=" + (numOjos[secureRandom.nextInt(numOjos.length)]) + ", colorPiel=" + (colorPiel[secureRandom.nextInt(colorPiel.length)]) + ", altura=" + (altura[secureRandom.nextInt(altura.length)]) + ", nivelCrearObjetos=" + (nivelCrearObjetos[secureRandom.nextInt(nivelCrearObjetos.length)]) + ", nivelArreglarCosas=" + (nivelArreglarCosas[secureRandom.nextInt(nivelArreglarCosas.length)]) + ", nivelDestruccion=" + (nivelDestruccion[secureRandom.nextInt(nivelDestruccion.length)]) + '}'; } public static void main (String ... blabla) { IntStream.rangeClosed(1,5) . forEach(numero -> System. out. println(numero +"- "+new Ayudantes (). toString())); } }
Output1- Ayudante {numOjos=1, colorPiel=amarillo, altura=mediano, nivelCrearObjetos=5, nivelArreglarCosas=3, nivelDestruccion=4} 2- Ayudante {numOjos=2, colorPiel=amarillo, altura=mediano, nivelCrearObjetos=3, nivelArreglarCosas=2, nivelDestruccion=3} 3- Ayudante {numOjos=1, colorPiel=morado, altura=mediano, nivelCrearObjetos=2, nivelArreglarCosas=2, nivelDestruccion=4} 4- Ayudante {numOjos=2, colorPiel=morado, altura=mediano, nivelCrearObjetos=1, nivelArreglarCosas=4, nivelDestruccion=1} 5- Ayudante {numOjos=2, colorPiel=amarillo, altura=alto, nivelCrearObjetos=4, nivelArreglarCosas=3, nivelDestruccion=2} Process finished with exit code 0
3 maneras diferentes de hacerlo, existen masprivate void iterates() { for(int f=0; f<5; f++) { System. out. println((f +1)+"- "+new Ayudantes (). toString()); } System. out. println("··········································"); List<Ayudantes> ayudantes = new ArrayList<>(); ayudantes.add(new Ayudantes()); ayudantes.add(new Ayudantes()); ayudantes.add(new Ayudantes()); ayudantes.add(new Ayudantes()); ayudantes.add(new Ayudantes()); for(Ayudantes ayudante : ayudantes) { System. out. println(ayudante. toString()); } System. out. println("··········································"); IntStream.rangeClosed(1,5) . forEach(numero -> System. out. println(numero +"- "+new Ayudantes (). toString())); }
Título: Re: crear 5 objetos con caracteristicas ya definidas aleatoriamente
Publicado por: sheiking en 29 Octubre 2018, 02:04 am
muchas gracias amigo me haz ayudado bastante
|