Android - array permanente

 
Vista:
Imágen de perfil de Francisco

array permanente

Publicado por Francisco (12 intervenciones) el 24/06/2016 23:26:36
El objetivo de mi programa es que salgan aleatoriamente los números del 1 al 5 y sin repetir. Lo consigo con el código que muestro a continuación y que aparecen en la Consola dentro del bucle FOR. El problema es que esos números introducidos en el array reserva[i] no permanecen, por lo que al intentar mostrarlos fuera de ese bucle FOR, el resultado es que aparecen cinco 0 en lugar de los números anteriores. ¿Cómo puedo conseguir que se almacenen en ese array? Gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int n=5;  //numeros aleatorios
int k=n;  //auxiliar;
int res;
int[] numeros=new int[n];
int[] reserva=new int[n];
Random rnd=new Random();
//se rellena una matriz del 1 al 5 (1 a n)
for(int i=0;i<n;i++)
{
	numeros[i]=i+1;
}
 
 
for(int i=0;i<n;i++)
{
	res=rnd.nextInt(k);
	reserva[i]=numeros[res];
	numeros[res]=numeros[k-1];
	k--;
	//PRUEBA: BIEN, SALEN LOS 5 NÚMEROS ALEATORIOS Y SIN REPETIR
	System.out.println("Prueba DENTRO del FOR: "+reserva[i]);
}
 
//Ver el resultado FUERA del FOR
// MAL, NO SE ALMACENÓ DE FORMA PERMANENTE: Todos 0
for(int i=0;i<5;i++)
{
    System.out.println("Prueba FUERA del FOR: "+reserva[i]);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco

array permanente

Publicado por Francisco (12 intervenciones) el 25/06/2016 22:07:18
He logrado averiguar dónde me aparece el problema, aunque no el motivo ni la solución. Se trata de que tengo un IF para que todo ese proceso se ejecute solo la primera vez (conta == 1). Si lo quito, los números del array reserva[i] sí permanecen, por lo que al mostrarlos fuera de ese bucle FOR, el resultado es que vuelven a aparecer los 5 números aleatorios en lugar de los cinco 0. ¿Cuál puede ser el motivo y cómo solucionar el que ese proceso se ejecute solo la primera vez que pulso un botón?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
conta++;
If (conta == 1)  // LÍNEA CAUSANTE DEL PROBLEMA
{
   int n=5;  //numeros aleatorios
   int k=n;  //auxiliar;
   int res;
   int[] numeros=new int[n];
   int[] reserva=new int[n];
   Random rnd=new Random();
   //se rellena una matriz del 1 al 5 (1 a n)
   for(int i=0;i<n;i++)
   {
	numeros[i]=i+1;
   }
 
 
   for(int i=0;i<n;i++)
   {
	res=rnd.nextInt(k);
	reserva[i]=numeros[res];
	numeros[res]=numeros[k-1];
	k--;
	//Prueba: bien, salen los 5 números aleatorios y sin repetir
	System.out.println("Prueba DENTRO del FOR: "+reserva[i]);
   }
 
}
 
//Ver el resultado FUERA del IF
// Mal, no se almacenó de forma permanente: Todos 0
for(int i=0;i<5;i++)
{
    System.out.println("Prueba FUERA del FOR: "+reserva[i]);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar