Vamos a ver como hacer bucles en Java con for
y while
.
Un bucle, como dice el nombre, es repetir una acción o parte de código varias veces. En cada repetición, el bucle realiza una serie de pasos. Este bucle está controlado con una condición que le permitirá continuar repitiendo, o parar.
En Java hay 2 tipos de bucles:
Bucles for
Un bucle for
se usa para repetir una acción un número determinado de veces.
Este se utiliza con la palabra clave for
seguido de tres instrucciones:
- Declaración inicial: Esta instrucción correrá antes de iniciar el bucle.
- Condición para seguir: esta instrucción ha de devolver un
boolean
. Cuando se cumpla una iteración del bucle, se llamará la comprobación. Mientras sea cierta, el bucle continuará. Si es falsa, el bucle terminará en ese mismo ciclo. - Instrucción final: Esta instrucción será llamada al finalizar un ciclo.
Como ejemplo haremos un programa que cuente hasta 10. Vamos a hacer un bucle que vaya desde el 0 hasta el 9, y lo imprima en pantalla:
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
}
Este bucle imprimirá el valor de i
, e i
irá incrementando 1 cada vez que termine un ciclo. El primer ciclo i
será 0, el segundo ciclo i
será 1, y así hasta que i
sea menor de 10; cuando acabe el décimo ciclo, i
pasará a ser 10, con lo cual la condición i < 10
ya no será cierta, y el bucle terminará.
For-each
La utilidad principal de los bucles for
es poder iterar sobre las listas. Suponiendo que tenemos una Array
de nombres, podríamos imprimir en pantalla todos con un for-loop
public class Main {
public static void main(String[] args) {
String[] nombres = new String[]{"Pol", "Alex", "Daniel"};
for (int i = 0; i < nombres.length; i++) {
String nombre = nombres[i];
System.out.println(nombre);
}
}
}
En este programa estamos declarando la Array
nombres
, y luego abajo estamos iterando cada posición de la Array
con un bucle for
, que depende de la longitud de nombres
. Aún así, hay una manera más sencilla de iterar sobre cada posición en un Array
.
Un bucle for-each
tiene una sintaxis algo más sencilla, donde cada iteración ya nos da el valor que buscamos de la posición.
public class Main {
public static void main(String[] args) {
String[] nombres = new String[]{"Pol", "Alex", "Daniel"};
for (String nombre : nombres) {
System.out.println(nombre);
}
}
}
Si corremos este programa veremos que el resultado es el mismo que el del programa anterior.
Una clara desventaja de los bucles for-each
es que no tenemos la posición donde se encuentra ese valor dentro de la Array
.
Bucles while
Un bucle while
se usa para ejecutar una acción indefinidamente mientras una condición sea true
.
Este se utiliza con la palabra clave while
seguido de la condición que determina si el bucle sigue o no.
Como ejemplo vamos a hacer un programa que tomará números y los irá sumando, hasta que el usuario no introduzca más números. Necesitaremos usar un Scanner
.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sumaTotal = 0;
while (scanner.hasNextInt()) {
sumaTotal += scanner.nextInt();
}
System.out.println(sumaTotal);
}
}
En el ejemplo scanner.hasNextInt()
devuelve un boolean
que será cierto si en la entrada siguen habiendo números.