Estructuras de bucle en Java - for, while y do...while

Las sentencias de un programa con estructura secuencial solo se ejecutan una vez.

Si desea ejecutar la misma operación varias veces, necesita usar una estructura de bucle.

Java tiene tres estructuras de bucle principales:

  • whileBucle
  • do…whileBucle
  • forBucle

En Java 5 se introdujo un bucle for mejorado utilizado principalmente para arrays.


Bucle while

while es el bucle más básico, su estructura es:

while(Expresión booleana) { //Contenido del bucle }

Mientras la expresión booleana sea true, el bucle se seguirá ejecutando.

Ejemplo

Código del archivo Test.java:

public class Test { public static void main(String[] args) { int x = 10; while( x < 20 ) { System.out.print("value of x : " + x ); x++; System.out.print("\n"); } } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19

Bucle do...while

En cuanto a la sentencia while, si no se cumple la condición, no se puede entrar en el bucle. Pero a veces necesitamos que se ejecute al menos una vez incluso si no se cumple la condición.

El bucle do...while es similar al bucle while, con la diferencia de que el bucle do...while se ejecuta al menos una vez.

do {
       //代码语句
}while(布尔表达式);

Nota:La expresión booleana está después del cuerpo del bucle, por lo que el bloque de sentencias ya se ha ejecutado antes de evaluar la expresión booleana. Si el valor de la expresión booleana es true, el bloque de sentencias se ejecuta continuamente hasta que el valor de la expresión booleana sea false.

Ejemplo

Código del archivo Test.java:

public class Test { public static void main(String[] args){ int x = 10; do{ System.out.print("value of x : " + x ); x++; System.out.print("\n"); }while( x < 20 ); } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19

Bucle for

Aunque todas las estructuras de bucle pueden representarse con while o do...while, Java proporciona otra sentencia: el bucle for, que hace que algunas estructuras de bucle sean más simples.

El número de ejecuciones del bucle for se determina antes de ejecutarse. El formato de sintaxis es el siguiente:

for(Inicialización; Expresión booleana; Actualización) { //Sentencias de código }

Acerca del bucle for, hay los siguientes puntos a explicar:

  • Primero se ejecuta el paso de inicialización. Se puede declarar un tipo, se pueden inicializar una o más variables de control del bucle, o también puede ser una sentencia vacía.
  • Luego se evalúa el valor de la expresión booleana. Si es true, se ejecuta el cuerpo del bucle. Si es false, el bucle termina y se comienzan a ejecutar las sentencias posteriores al bucle.
  • Después de ejecutar una iteración del bucle, se actualizan las variables de control del bucle.
  • Se vuelve a evaluar la expresión booleana. El bucle repite el proceso anterior.

Ejemplo

Código del archivo Test.java:

public class Test { public static void main(String[] args) { for(int x = 10; x < 20; x = x+1) { System.out.print("value of x : " + x ); System.out.print("\n"); } } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19

Bucle for mejorado de Java

Java 5 introdujo un bucle for mejorado utilizado principalmente para arrays.

El formato de sintaxis del bucle for mejorado de Java es el siguiente:

for(Sentencia de declaración : Expresión) { //Sentencias de código }

Sentencia de declaración:Declara una nueva variable local, cuyo tipo debe coincidir con el tipo de los elementos del array. Su ámbito se limita al bloque de sentencias del bucle, y su valor es igual al valor del elemento del array en ese momento.

Expresión:La expresión es el nombre del array a acceder, o un método cuyo valor de retorno sea un array.

Ejemplo

Código del archivo Test.java:

public class Test { public static void main(String[] args){ int [] numbers = {10, 20, 30, 40, 50}; for(int x : numbers ){ System.out.print( x ); System.out.print(","); } System.out.print("\n"); String [] names ={"James", "Larry", "Tom", "Lacy"}; for( String name : names ) { System.out.print( name ); System.out.print(","); } } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

10,20,30,40,50,
James,Larry,Tom,Lacy,

Palabra clave break

break se usa principalmente en sentencias de bucle o sentencias switch, para saltar fuera de todo el bloque de sentencias.

break sale del bucle más interno y continúa ejecutando las sentencias posteriores a ese bucle.

Sintaxis

El uso de break es muy sencillo, es una sentencia dentro de la estructura de bucle:

break;

Ejemplo

Código del archivo Test.java:

public class Test { public static void main(String[] args) { int [] numbers = {10, 20, 30, 40, 50}; for(int x : numbers ) { //Cuando x es igual a 30, sale del bucle if( x == 30 ) { break; } System.out.print( x ); System.out.print("\n"); } } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

10
20

Palabra clave continue

continue se aplica a cualquier estructura de control de bucle. Su función es hacer que el programa salte inmediatamente a la siguiente iteración del bucle.

En el bucle for, la sentencia continue hace que el programa salte inmediatamente a la sentencia de actualización.

En los bucles while o do...while, el programa salta inmediatamente a la sentencia de evaluación de la expresión booleana.

Sintaxis

continue es simplemente una sentencia dentro del cuerpo del bucle:

continue;

Ejemplo

Código del archivo Test.java:

public class Test { public static void main(String[] args) { int [] numbers = {10, 20, 30, 40, 50}; for(int x : numbers ) { if( x == 30 ) { continue; } System.out.print( x ); System.out.print("\n"); } } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

10
20
40
50
Otras extensiones