Duda (Parar bucle con dato boolean) [bucle while]

Iniciado por Dem0ny, 16 Diciembre 2008, 12:32 PM

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

Dem0ny

Bien tengo un gran codigo, normalmente no uso boolean asike no tengo practica con este, pero este programa me lo "requeria" aunke ya he conseguido arreglarlo, me gustaría entender el uso de estas expresiones. Les pondre un pequeño ejemplo.

Código (java) [Seleccionar]

import.java.util.*;
class foro{
public static void main (String args[]){
Scanner leer=new scanner(System.in);
int a;
boolean seguir=true;

          while(seguir==true){
                 System.out.printf("Hola mundo");
                 System.out.printf("Probamos de nuevo?");
                 System.out.printf("pulsa 1 para seguir, y cualquier tecla para terminar
                                              el programa")
                  a=leer.nextInt();
             
               if(a=1){
                  seguir=true;
               }
               else{
                System.out.printf("Fin de la aplicacion")
                seguir=false;

                }
           }
      }

}


Es un codigo rapido que se basa en la impresion por pantalla de hola mundo, posteriormente te pregunta que si quieres seguir el programa, si pulsas 1, se vuelve a imprimir hola mundo y te vuelve a preguntar si kieres seguir, y si pulsas cualquier otra tecla se supone que acaba el bucle, al cambiar el valor boolean a false y no cumplir la condición while.

Pues en el codigo tan grande que poseo es un ejemplo de como lo utilizo, hay muchos metodos mas, hay un chorro de lineas pero no entiendo porke no me para el bucle, es decir con este ejemplo, se constituye un bucle infinito.

Alguien podría explicarme mas o menos como funciona? El problema esque he buscado bien pero no me a aclarado mis dudas, siempre veo valores booleanos introducidos en metodos etc. Pero asi como lo he hecho yo, nosé si existirá siquiera.

-------

Finalmente solucione el problema metiendo donde pone seguir=false en la ultima parte del codigo con un break; pero en mi programa lo unico que necesitava en una parte era crear un bucle que se repitiera hasta que el usuario no quisiera. asique no se me ocurrio otra cosa que sustituir el seguir=false por break; , y me va todo perfecto el programa y tal, solo que cuando mande el codigo para su correcion nose si le gustará mucho ver un valor booleano declarado y en la condicion while (seguir=true) para acabarlo con un break. Esto es correcto o tb podría hacer algo mas concreto para eliminar el valor boleano o dejarlo también estaría bien?

Saludos y gracias de antemano!

Flakito81

Con inicializar la vble seguir una sola vez (antes de entrar al bucle basta), tan solo cambias el estado cnd tenga que salir, el problema, quizas, está en el while que tienes while (seguir=true) cuando lo correcto sería while(seguir==true) o while(seguir)

Suerte!

Dem0ny

Ya he estado probando lo que me has dicho, lo he solucionado dejando asi:

boolean seguir;
seguir=true;

Luego en el while, he puesto while(seguir) y cuando llega el momento seguir=false.

Lo de == true no creo que te deje ya que, cuando tu utilizas en un condicional ==, lo que le asignas es el valor de una variable, caracter etc. es igualdad... nose como explicarlo, es comparación ==...nose como decirlo... por ello salta error el compilador:)

Saludos! Solucionado, gracias Flakito81

-Ramc-

Pero, ~AbbadoN~ lo que dice Flakito81 es correcto; while() recibe un valor boolean solo true o false, y tu haces seguir = true osea que antes de probar la variable seguir con el while siempre sera true, por lo que tu bucle sera infinito. Igualmente en el if, tienes un solo = y ese si debería lanzarte un error ya que envias a = 1, y cuando prueba la variable a en el while estas enviando un número y recibe un boolean, lo correcto es == para comparar.

Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.

juancho77

Código (java) [Seleccionar]
while (seguir=true)
{
}


primera se hace la asignacion, y luego se evalua seguir.
Esa linea equivale a estas dos

Código (java) [Seleccionar]
while (seguir)
{
seguir=true;
}


Normalmente el uso correcto es:

Código (java) [Seleccionar]
while (seguir) {}  o   
Código (java) [Seleccionar]
while (seguir==true)

No entiendo como puedes escribir un codigo tan largo como dice sin saber usar expresiones de evaluacion booleanas.  :huh:

Dem0ny

bueno bueno, no os tireis al cuello tampoco es pa tanto xDDD

@-Ramc-, tienes razón eso es un fallo que no me di cuenta, que lo escribi rapido, thx por avisar ahora edito :)

@juancho77: Gracias por responder. No eske no supiera de su existencia o que no supiera komo va, sino que, me rayé me ize un lio, y ya esta y no veia claro el tema... no creo que sea para tanto no?.

Gracias de todas maneras, saludos