2011-03-25 20 views
10

En realidad, esta es la primera vez que veo un código como el siguiente:necesito una ayuda para entender este código

class A 
{ 
    public static void main(String args[]) 
    { 
     outer : for(int i=0;i<10;i++) 
     { 
      for(int j=0;j<10;j++) 
      { 
       if(j > i) 
       { 
        System.out.println(); 
        continue outer; 
       } 
       System.out.print(" " +(i *j)); 
      } 
     } 
     System.out.println(); 
    } 
} 

dos líneas que no entiendo:

outer : for(int i=0;i<10;i++) // this seems similar to 'for each'? 

continue outer; // I know that 'continue' will break the loop and continue the next turn, but what will do in this situaton? 
+5

¿Por qué el voto a favor? No hay preguntas estúpidas, solo maestros estúpidos. –

+11

@ Aaron: Creo que * hay * preguntas estúpidas, pero no creo que esta sea una de ellas. –

+0

Este tipo de código es lo que sucede cuando traduces C heredada a Java y temes tocar cualquier cosa ... – iluxa

Respuesta

4
outer : for(int i=0;i<10;i++) 

define una etiqueta para el bucle externo, llamado outer

continue outer; 

medios, ir a la siguiente iteración del bucle etiquetado outer

10

La parte outer: es una etiqueta. Básicamente está etiquetando el ciclo. El bucle en sí funciona igual de normal.

El continue outer; significa "continuar hasta el inicio del cuerpo del lazo etiquetado outer" (después de incrementar y probar i por supuesto). Es algo así como tener una instrucción break; para salir del ciclo interno, y luego tener una instrucción normal continue; para continuar con el siguiente paso del ciclo externo.

3

outer es una etiqueta, cuando se llama continue outer;, el código saltará a la etiqueta outer y continuará desde allí. La razón detrás de esto en este caso es que el codificador desea salir del lazo interno cuando j>i y continuar el bucle externo.

+0

genial, la primera vez que sé que Java tiene esta característica ... ¡Gracias! –

1

outer es una etiqueta, y continue outer básicamente hace un goto pero continúa en el bucle en lugar de empezar de nuevo.

1

outer: define una etiqueta de "exterior" que se puede utilizar en break y continue. Solo está permitido delante de las construcciones de bucle (for, while, do).

Así que continue outer significa "continuar con el lazo exterior" o "aplicar el continue al lazo con la etiqueta correspondiente".

Cuestiones relacionadas