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

Duda con condicional if sin llaves

Estas en el tema de Duda con condicional if sin llaves en el foro de Java en Foros del Web. Tengo la gran duda de cuanto codigo se ejecuta cuando se declara un condicional sin llaves: Código: if (!(usingOpenGL)) canvas.addEventLink(RepaintEvent.class, this, "getCanvasAndProceed"); ... Tras evaluar ...
  #1 (permalink)  
Antiguo 18/07/2010, 10:01
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Duda con condicional if sin llaves

Tengo la gran duda de cuanto codigo se ejecuta cuando se declara un condicional sin llaves:

Código:
if (!(usingOpenGL))
canvas.addEventLink(RepaintEvent.class, this, "getCanvasAndProceed");	
...
Tras evaluar esto en true, se ejecuta la primera linea que le sigue. Pero si evalúa en false, se salta la primera linea nada mas o se corta definitivamente la lectura?

Es decir, si lo que necesito evaluar sirve para ejecutar o evitar una sola linea, eso primero que escribí es equivalente a esto o el if se hace cargo solo de la primera linea que encuentra?

Código:
if (usingOpenGL) return;
canvas.addEventLink(RepaintEvent.class, this, "getCanvasAndProceed");	

... esto se ejetuta o no?
  #2 (permalink)  
Antiguo 18/07/2010, 14:01
Avatar de calichecal  
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Duda con condicional if sin llaves

en el primer código se ejecuta la linea si se cumple la condición

y en el segundo código se ejecuta si no se cumple la condición por que retornaría antes.
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-
  #3 (permalink)  
Antiguo 18/07/2010, 14:22
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: Duda con condicional if sin llaves

Ok, gracias. Entonces me das la certeza de que un condicional sin llaves sirva solo para una linea. Evalua hasta la primer ";" no?

Lo digo para evitar el uso de llaves en estos casos:
Cita:
if (displayCounter == true) {doDrawCounter();}


if (displayStats == true) {doDrawStats(); }
Eso quedaría tranquilamente así entonces:

Cita:
if (displayCounter == true) doDrawCounter();

if (displayStats == true) doDrawStats();
  #4 (permalink)  
Antiguo 18/07/2010, 15:17
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Duda con condicional if sin llaves

Hola,

Los caracteres '{}' se usan para encerrar un 'bloque' de código y 'agrupar' varias instrucciones que adquieren cierta independencia semántica (variables locales y clases locales) del código que las contiene. Por ese motivo es adecuado 'indentar' el código correctamente, y sí ... solo se ejecuta la primera sentencia en el caso no exista la 'agrupación' del 'bloque' {}.

Código:
public class test {
  public static void main(String[] args) {
    String s1 = "Outsider";
    {
      /* Variable local al bloque */
      /* no se puede usar fuera de este bloque */
      String s2 = "Insider";
    }
    while ("A".equals("B"))
      System.out.println("dentro del while");
    System.out.println("fuera del while");
    return;
  }
}
http://java.sun.com/docs/books/jls/t...tatements.html

Saludos,

ps:

True o false es intrínseco a las operaciones lógicas; una variable lógica no es necesario compararla con true.
if (displayCounter) doDrawCounter();

Última edición por HackmanC; 18/07/2010 a las 15:35 Razón: semántica
  #5 (permalink)  
Antiguo 18/07/2010, 16:58
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: Duda con condicional if sin llaves

Perfecto. Gracias por todo. A ver si me animo más entonces y simplifico el codigo ;o)

Etiquetas: condicional, llaves
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 05:27.