crear 5 objetos con caracteristicas ya definidas aleatoriamente

Iniciado por sheiking, 29 Octubre 2018, 00:12 AM

0 Miembros y 1 Visitante están viendo este tema.

sheiking

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};
   
}

rub'n

Hola que tal?

Usa geshi, las variables de instancia deben ser declaradas por convención como private que es un modificador de acceso




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



Código (java) [Seleccionar]

    * @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


Código (java) [Seleccionar]

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
   public String toString() {
       final SecureRandom secureRandom = new SecureRandom();
       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()));
   }
}


Output

Código (bash) [Seleccionar]

1- 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 mas
Código (java) [Seleccionar]

private 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()));

   }


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

sheiking