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

while; con punto y coma (no doWhile)

Estas en el tema de while; con punto y coma (no doWhile) en el foro de Java en Foros del Web. Ayer sin querer compile un while(...); y puse ; al final y compiló sin problemas (no era dentro de un doWhile) y una amiga me ...
  #1 (permalink)  
Antiguo 11/03/2009, 14:29
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 10 meses
Puntos: 35
while; con punto y coma (no doWhile)

Ayer sin querer compile un while(...);
y puse ; al final y compiló sin problemas (no era dentro de un doWhile)
y una amiga me conto que se podia hacerlo pero obviaría el bloque que le corresponde ¿o es una negacion? y por eso no lee el bloque de codigo?
La verdad esa sintaxis nunca la vi, me quede shokeado
  #2 (permalink)  
Antiguo 11/03/2009, 17:37
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: while; con punto y coma (no doWhile)

La sintaxis es:
Código Java:
Ver original
  1. while (condicion) sentencia
o
Código Java:
Ver original
  1. while (condicion) bloque

En el primer caso sentencia es una única sentencia. Y lo que ocurre es que:
Código Java:
Ver original
  1. ;
es una sentencia válida. Es una sentencia vacía, que no hace nada. Es decir, en Java yo puedo hacer:

Código Java:
Ver original
  1. tal();
  2. ;
  3. cual();

Entonces, en un bucle (también ocurre con bucles for, o con if), si hago:

Código Java:
Ver original
  1. while (condicion) sentencia;
  2. otrasentencia;

Sólo la primera sentencia se ejecuta en el bucle, no? Pero "sentencia;" puede ser, como he dicho una sentencia vacía ";". De modo que esto:

Código Java:
Ver original
  1. while (condicion) ;
  2. otrasentencia;
es perfectamente válido pero se comporta como has visto. Es completamente normal.


Otro asunto es que sea o no habitual o que deba o no usarse. En general el código así tiende a crear confusiones como la tuya, pero en ocasiones se puede encontrar código así como una forma de, por ejemplo, avanzar en una búsqueda hasta determinado punto pero sin hacer nada más. Es decir, imagina que tengo una lista de nodos y quiero ir avanzando hasta el primer nodo que esté marcado como válido. Pero no quiero hacer nada en los nodos que haya antes hasta que encuentre ese. En muchos casos verás a gente (sobretodo si ya llevan años) escribiendo cosas así:

Código Java:
Ver original
  1. while ( !list.next().isvalid() );
  #3 (permalink)  
Antiguo 12/03/2009, 12:32
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 10 meses
Puntos: 35
Respuesta: while; con punto y coma (no doWhile)

Waw! dadme un poco de tu sabiduria
Voy a tratar de usarlo de vez en cuando, gracias!
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 19:32.