Foros del Web » Programación para mayores de 30 ;) » Java »

Problema bucle

Estas en el tema de Problema bucle en el foro de Java en Foros del Web. Hola a todos !! Vereis tengo un pequeño problema con un bucle que no se muy bien como hacerlo. Tengo un array de Strings (que ...
  #1 (permalink)  
Antiguo 18/07/2014, 10:12
 
Fecha de Ingreso: enero-2012
Mensajes: 32
Antigüedad: 12 años, 3 meses
Puntos: 1
Pregunta Problema bucle

Hola a todos !!
Vereis tengo un pequeño problema con un bucle que no se muy bien como hacerlo. Tengo un array de Strings (que son enteros), y lo que quiero es generar un numero aleatorio y compararlo con todos los elementos del array. Al final me debo de quedar con el elemento aleatorio creado que no este presente en el array.


Código:
int numero;  
String numeroString;
String[] array = {"1","2","3","4","5","6","7","8","9"};
numero = (int)Math.floor(Math.random()*12+1);
numeroString = String.valueOf(numero);
while(??)
{ 
         if(array[i].equals(numeroString))
         { 
                ??
         }
         else
         {
                ??
         }     
}//cierre while
La verdad no se si lo estoy orientado bien o que, pero no consigo una manera de hacerlo. Una ayuda por favor !!
  #2 (permalink)  
Antiguo 19/07/2014, 01:46
 
Fecha de Ingreso: agosto-2013
Mensajes: 18
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema bucle

En estos casos lo normal es usar una bandera booleana para llevar el control de si en cada vuelta del bucle has dado con lo que buscabas (y por tanto puedes parar ya) o no.

Por ejemplo, antes del WHILE deberías definir un objeto booleano como:

boolean encontrado = false;

Inicializado a falso. Y la cosa funcionará así: mientras NO hayamos encontrado el elemento, seguimos buscando. Por tanto, el WHILE sería:

while(!encontrado){
...
}

El esqueleto de lo que va ahí dentro ya lo tienes, sólo falta rellenarlo según varía el estado de la bandera: si has dado con el número buscado haces

encontrado = true;

y el bucle no daría más vueltas. Y la parte del ELSE la puedes quitar, pues si el número no era el buscado no hace falta hacer nada. Al final del proceso el resultado se guardará en el elemento i actual del array.

Que por cierto, recuerda declarar esa variable "i", inicializarla, e incrementarla dentro del bucle.
  #3 (permalink)  
Antiguo 19/07/2014, 05:29
 
Fecha de Ingreso: enero-2012
Mensajes: 32
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Problema bucle

Ahora siii!!
Muchas gracias por la ayuda. He conseguido justo lo que queria. Aqui esta el codigo por si a alguien le hace falta o para enseñarme alguna manera más eficiente
Código:
        int numero;        
        String numeroString;
        String[] array = {"1","2","3","4","5","6","7","8","9","10","11","12"};            
        boolean encontrado = false;               
        numero = (int)Math.floor(Math.random()*20+1);
        numeroString = String.valueOf(numero); 
        while(!encontrado)
        { 
           int veces=0;
           for(int i =0; i<array.length;i++)
           {
                if(array[i].equals(numeroString))
                {
                    numero = (int)Math.floor(Math.random()*20+1);
                    numeroString = String.valueOf(numero);
                }
                else                                                       
                    veces++;               
           }
           
           if(veces == array.length)           
               encontrado = true;                      
        }
Gracias por la ayuda !!

Etiquetas: bucle, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:55.