elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Duda (Parar bucle con dato boolean) [bucle while]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda (Parar bucle con dato boolean) [bucle while]  (Leído 18,628 veces)
Dem0ny

Desconectado Desconectado

Mensajes: 233


ReseacheR


Ver Perfil WWW
Duda (Parar bucle con dato boolean) [bucle while]
« en: 16 Diciembre 2008, 12:32 pm »

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
  1. import.java.util.*;
  2. class foro{
  3. public static void main (String args[]){
  4. Scanner leer=new scanner(System.in);
  5. int a;
  6. boolean seguir=true;
  7.  
  8.          while(seguir==true){
  9.                 System.out.printf("Hola mundo");
  10.                 System.out.printf("Probamos de nuevo?");
  11.                 System.out.printf("pulsa 1 para seguir, y cualquier tecla para terminar
  12.                                              el programa")
  13.                  a=leer.nextInt();
  14.  
  15.               if(a=1){
  16.                  seguir=true;
  17.               }
  18.               else{
  19.                System.out.printf("Fin de la aplicacion")
  20.                seguir=false;
  21.  
  22.                }
  23.           }
  24.      }
  25.  
  26. }
  27.  

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!


« Última modificación: 20 Diciembre 2008, 19:03 pm por ~AbbadoN~ » En línea

Flakito81


Desconectado Desconectado

Mensajes: 519



Ver Perfil
Re: Duda (Parar bucle con dato boolean) [bucle while]
« Respuesta #1 en: 16 Diciembre 2008, 12:47 pm »

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!


En línea

Dem0ny

Desconectado Desconectado

Mensajes: 233


ReseacheR


Ver Perfil WWW
Re: Duda (Parar bucle con dato boolean) [bucle while]
« Respuesta #2 en: 16 Diciembre 2008, 13:15 pm »

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
En línea

-Ramc-


Desconectado Desconectado

Mensajes: 495



Ver Perfil
Re: Duda (Parar bucle con dato boolean) [bucle while]
« Respuesta #3 en: 16 Diciembre 2008, 17:25 pm »

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.
En línea


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


Desconectado Desconectado

Mensajes: 455


rie con demencia


Ver Perfil
Re: Duda (Parar bucle con dato boolean) [bucle while]
« Respuesta #4 en: 17 Diciembre 2008, 09:18 am »

Código
  1. while (seguir=true)
  2. {
  3. }

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

Código
  1. while (seguir)
  2. {
  3. seguir=true;
  4. }

Normalmente el uso correcto es:

Código
  1. while (seguir)
{}  o   
Código
  1. while (seguir==true)

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

Dem0ny

Desconectado Desconectado

Mensajes: 233


ReseacheR


Ver Perfil WWW
Re: Duda (Parar bucle con dato boolean) [bucle while]
« Respuesta #5 en: 17 Diciembre 2008, 17:43 pm »

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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con bucle y funcion feof
Programación C/C++
Franquieli 2 3,572 Último mensaje 30 Julio 2012, 21:21 pm
por Franquieli
[QT C++] Como salir del bucle??
Programación C/C++
x7uk 3 4,312 Último mensaje 28 Noviembre 2012, 17:21 pm
por febef
[C++] Problema con bucle en Eclipse
Programación C/C++
HijoDePuta 4 3,053 Último mensaje 9 Agosto 2013, 20:14 pm
por HijoDePuta
¿Parar un bucle for pulsando una tecla? « 1 2 »
Programación C/C++
jmhr98 12 8,888 Último mensaje 23 Agosto 2018, 00:26 am
por enriquemesa8080
Como frenar un bucle for con un bucle while en bash linux
Scripting
mario290386 0 2,417 Último mensaje 5 Mayo 2019, 13:58 pm
por mario290386
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines