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
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 :o](https://forum.elhacker.net/Smileys/navidad/shocked.gif)
Output
3 maneras diferentes de hacerlo, existen mas
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
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 :o](https://forum.elhacker.net/Smileys/navidad/shocked.gif)
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()));
}