For hacia atrás

✅ (Sí, es correcto) For hacia atrás

Sí profe, este for está perfecto para contar hacia atrás:

public class Main{
    public static void main(String[] args){
        for (int i = 5; i > 0; i--){
            System.out.println("Holi mundo " + i);
        }
    }
}

Imprime: 5, 4, 3, 2, 1.

🔁 While loop en Java

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.

🔄 Reescribiendo el for con while

Vamos a hacer lo mismo (contar hacia atrás), pero con while.

public class Main{
    public static void main(String[] args){
        int i = 5;

        while (i > 0){
            System.out.println("Holi mundo " + i);
            i--;
        }
    }
}

✅ Logramos exactamente el mismo resultado.

🧠 For vs While

  • Usa for cuando ya sabes cuántas veces vas a repetir algo.
  • Usa while cuando NO sabes cuántas veces se repetirá.

Ejemplo típico para while: 👉 “Pide input hasta que el usuario escriba salir”.

⛔ Error típico con Strings

Mucho ojo: en Java NO compares Strings con != o ==.

Esto es incorrecto:

String input = "";
while (input != "salir") {
    // ...
}

Porque == y != comparan referencias (direcciones en memoria), no el texto.

✅ La forma correcta: .equals()

La forma correcta es usar el método .equals(...).

Y si queremos “mientras NO sea salir”, usamos !:

while (!input.equals("salir")) {
    // ...
}

🧪 Ejemplo: pedir texto hasta que escriba “salir”

📌 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.

🎯 While típico: validar un número entre 1 y 5

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 return

Dos formas de salir:

  • break → sale solo del ciclo
  • return → termina todo el método (y en main, termina el programa)

✅ Salir con break

import 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.

🛑 Salir con return

import 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.

🧭 Diagrama: while + break

┌────────────────────────────┐
│        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                      │
└───────────────────────────────┘

🧭 Diagrama: while + return

┌────────────────────────────┐
│        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)  │
 └──────────────────────────────┘