Un bucle es una parte de código que se ejecuta mientras ocurre una determinada condición, o hasta que dicha condición deja de cumplirse.
Uno de los bucles más utilizados es el bucle for:
for (tipo variable=valor; variable<limite; variable+/-incremento) El código contenido dentro de este bucle, comienza asignando a la variable (en este caso mivalor), el valor asignado como primer parámetro. En cada iteración del bucle, la variable se incrementa según lo indicado en el tercer parámetro. El bucle se ejecuta hasta que deja de cumplirse la condición incluida como segundo parámetro.
La variable puede ser de cualquier tipo, int, double….
El valor de la variable puede incrementarse o aminorarse, según el valor del tercer parámetro.
Si la condición del segundo parámetro no se cumple cuando el bucle se intenta ejecutar por primera vez, el bucle no llega a ejecutarse.
public class Buclesfor {
public static void main(String[] args) {
for (int mivalor = 3; mivalor < 7; mivalor += 1) {
System.out.println(mivalor * 12);
}
}
}Resultado:
36
48
60
72for / break Si dentro de una instrucción for, necesitamos interrumpir la ejecución del bucle completo, podemos usar la instrucción break. Esta instrucción nos enviará fuera del bucle, aunque no se haya terminado de ejecutar.
import java.util.Random;
public class Buclesfor {
public static void main(String[] args) {
Random aleatorio= new Random();
Random mi_numero=new Random();
int elegido;
int intento=0;
int numero=aleatorio.nextInt(5)+1;
for (int k = 0; k<10;k+=1 ) {
elegido=mi_numero.nextInt(5)+1;
intento+=1;
if (elegido==numero){
System.out.println("El número elegido es el: "+numero);
System.out.println("Lo he acertado en el intento: "+intento);
break;
}
else{
System.out.println("El número "+elegido+" no es el secreto.");
}
}
}
}Posible ejecución:
El número 3 no es el secreto.
El número 1 no es el secreto.
El número elegido es el: 2
Lo he acertado en el intento: 3for / continue Nos puede interesar que en un punto determinado del bucle for, no se ejecuten el resto de las sentencias dentro del bucle, y que vuelva al inicio de este para continuar con el siguiente número de la secuencia.
public class Buclesfor {
public static void main(String[] args) {
for (int k=0; k<20;k+=1){
if (k%5==0){
continue;
}
System.out.print(k+"-");
}
}
}Resultado: 1-2-3-4-6-7-8-9-11-12-13-14-16-17-18-19-Este pequeño código nos muestra los números del 1 al 20, pero no tiene en cuenta los que son divisibles por 5.
for mejorado para recurrer estructuras de datos. for-each . Con un bucle for, podemos recorrer todos los elementos de una estructura de datos (arrays, HashMap…).
En el siguiente ejemplo recorremos todos los elementos de la lista equipos.
import java.util.ArrayList;
import java.util.List;
public class Buclesfor {
public static void main(String[] args) {
int posicion=0;
List<String> equipos=new ArrayList<>();
equipos.add("España");
equipos.add("Argentina");
equipos.add("Inglaterra");
for (String nombre : equipos){
posicion+=1;
System.out.println("El equipo en la posición "+posicion+" ha sido: "+nombre);
}
}
}Resultado:
El equipo en la posición 1 ha sido: España
El equipo en la posición 2 ha sido: Argentina
El equipo en la posición 3 ha sido: InglaterraVeamos a continuación un ejemplo de for con HashMap:
import java.util.HashMap;
public class Buclesfor {
public static void main(String[] args) {
HashMap<String, String> paises = new HashMap<>();
paises.put("España", "Madrid");
paises.put("Argentina", "Buenos Aires");
paises.put("Inglaterra", "Londres");
for (String nombre : paises.keySet()){
System.out.println("País participante: "+nombre);
}
for (String nombre : paises.keySet()){
System.out.println("La capital de "+nombre+" es "+paises.get(nombre)+".");
}
}
}País participante: Argentina
País participante: Inglaterra
País participante: España
La capital de Argentina es Buenos Aires.
La capital de Inglaterra es Londres.
La capital de España es Madrid.Vemos que con .keySet( ) obtenemos la clave, y con .get(clave) obtenemos el valor.
