Sí profe, este for está perfecto para contar hacia atrás:
Imprime: 5, 4, 3, 2, 1.
En este tutorial vamos a hablar de los bucles while.
Los while son muy similares a los for en funcionalidad… pero diferentes en sintaxis.
📌 La idea es simple:
Mientras la condición sea
true, se repite el bloque.
for con whileVamos a hacer lo mismo (contar hacia atrás), pero con while.
✅ Logramos exactamente el mismo resultado.
for cuando ya sabes cuántas veces vas a repetir algo.while cuando NO sabes cuántas veces se repetirá.Ejemplo típico para while: 👉 “Pide input hasta que el usuario escriba salir”.
Mucho ojo: en Java NO compares Strings con != o ==.
Esto es incorrecto:
Porque == y != comparan referencias (direcciones en memoria), no el texto.
.equals()La forma correcta es usar el método .equals(...).
Y si queremos “mientras NO sea salir”, usamos !:
📌 Creamos el Scanner una sola vez (fuera del while), para no crear 10 scanners si el usuario escribe 10 veces.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = "";
while (!input.equals("salir")) {
System.out.print("Input: ");
input = scanner.nextLine().toLowerCase();
System.out.println(input);
}
scanner.close();
}
}✅ Todo lo que el usuario escriba se repite… y cuando escribe “salir”, el programa termina.
Este es el clásico para practicar while:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int numero = 0;
while (numero < 1 || numero > 5) {
System.out.print("Ingrese un número entre 1 y 5: ");
numero = sc.nextInt();
}
System.out.println("¡Correcto! El número es " + numero);
}
}📌 La condición dice: “mientras el número sea menor que 1 o mayor que 5… siga pidiendo”.
break vs returnDos formas de salir:
break → sale solo del cicloreturn → termina todo el método (y en main, termina el programa)breakimport java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("Ingrese un número entre 1 y 5: ");
int numero = sc.nextInt();
if (numero >= 1 && numero <= 5) {
System.out.println("¡Correcto! El número es " + numero);
break; // sale del while
}
System.out.println("Número inválido, intente de nuevo.");
}
System.out.println("Programa terminado correctamente.");
}
}✅ Aquí SÍ se ejecuta lo que está después del while.
returnimport java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("Ingrese un número entre 1 y 5: ");
int numero = sc.nextInt();
if (numero >= 1 && numero <= 5) {
System.out.println("¡Correcto! El número es " + numero);
return; // termina el programa completo
}
System.out.println("Número inválido, intente de nuevo.");
}
}
}📌 Con return nada después se ejecuta, porque el programa termina.
┌────────────────────────────┐
│ while (true) │
└─────────────┬──────────────┘
▼
┌─────────────────┐
│ Pedir número │
└───────┬─────────┘
▼
┌──────────────────────────┐
│ ¿Número entre 1 y 5? │
└───────┬───────────┬──────┘
│Sí │No
▼ ▼
┌─────────────────┐ ┌───────────────────────┐
│ Mostrar válido │ │ Mostrar "inválido" │
│ "¡Correcto!" │ │ y repetir ciclo │
└────────┬─────────┘ └───────────────────────┘
▼
┌───────────────┐
│ break (sale │
│ del while) │
└───────┬───────┘
▼
┌───────────────────────────────┐
│ Se ejecuta lo que sigue después│
│ del while │
└───────────────────────────────┘┌────────────────────────────┐
│ while (true) │
└─────────────┬──────────────┘
▼
┌─────────────────┐
│ Pedir número │
└───────┬─────────┘
▼
┌──────────────────────────┐
│ ¿Número entre 1 y 5? │
└───────┬───────────┬──────┘
│Sí │No
▼ ▼
┌─────────────────┐ ┌───────────────────────┐
│ Mostrar válido │ │ Mostrar "inválido" │
│ "¡Correcto!" │ │ y repetir ciclo │
└────────┬─────────┘ └───────────────────────┘
▼
┌──────────────────────────────┐
│ return (termina el programa) │
└──────────────────────────────┘