No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Introducción a Java

Curso de Introducción a Java

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Bucle do While

31/39
Recursos

Los bucles (ciclos) nos ayudan a ejecutar una parte de nuestro código una cantidad de veces hasta que se cumpla alguna condición y podamos continuar con la ejecución de nuestro código.

Existen diferentes bucles. Por ejemplo, el bucle do while:

do {
  // instrucciones
} while (condición);

Los ciclos evaluarán si la condición se cumple y cuando deje de hacerlo no ejecutarán más el código del ciclo. Las instrucciones son las encargadas de que esta condición cambie de verdadero a falso. De otra forma, si las instrucciones nunca cambian la condición, el ciclo no se detendrá nunca, lo que conocemos como un ciclo infinito.

La clase Scanner le permite a los usuarios contestar algunas preguntas para que nuestro programa actúe de una forma u otra. Para usarla solo debemos importar la clase Scanner de las APIs de desarrollo de Java:

import java.util.Scanner;

int response = 0;

Scanner sc = new Scanner(System.in);
response = Integer.valueOf(sc.nextLine());

Aportes 97

Preguntas 20

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

El Scanner lee lo que ingresa por teclado el usuario. Se declara de la siguiente manera:
Scanner sc = new Scanner(System.in);
Esta linea de código instancia un objeto de tipo Scanner (Clase que provee la biblioteca de Java, siempre hay que importarla para que funcione correctamente: import java.util.Scanner; antes de public class).

Donde:
Scanner es la nombre de la clase.
sc es el nombre que seleccionaron en este caso para el Scanner (podría ser cualquier otro, yo lo llamo input en los ejemplos de abajo).
**new **es la palabra reservada para instanciar un objeto (ver POO).
(System.in) es el final de la declaración, siempre.

Luego, para obtener el valor que se ingresa por teclado, lo
tendremos que asignar a una variable que sea del tipo de
dato que esperamos recibir.

variable=input.TipodeIngreso();
input.nextInt(), captura un numero entero desde el
teclado. Se asigna a una variable de tipo int.
•** input.nextDouble()**, captura un numero decimal desde el
teclado. Se asigna a una variable de tipo double.
input.nextLine(): captura toda la linea. Se asigna a una
variable String
• Input.nextChar() ++no existe! ++Para capturar un char
utilizaremos
input.next().charAt[0];

UN EJEMPLO COMPLETO:

Import java.util.Scanner;
public class IngresoDatos{
private static Scanner input = new Scanner(System.in);
public static void main(String[] args){
int num;//Declaramos una variable que permite almacenar números enteros
double num2; //Declaramos una variable que permite almacenar números con decimal
num=input.nextInt();
System.out.println(“El Numero ingresado es: “ + num);

num2= input.nextDouble();
System.out.println(“El Numero ingresado es: “ + num2)
}
}

En resumen:

  • While: Primero evalúa la condición, despues ejecuta.
  • Do While: Primero Ejecuta, despues evalúa la condición

no se saltan con otros temas lo confunden a uno con scaner

¿Por que capturar el valor con Interger.valueOf y no simplemente con sc.nextInt();?

import java.util.Scanner;
public class DoWhileLoop {

public static void main(String[] args) {

    int opcion = 0;



    do {
        System.out.println("Seleccione una opcion");
        System.out.println("1: Peliculas");
        System.out.println("2: Series");
        System.out.println("0: Salir");

        Scanner sc =new Scanner(System.in);
        opcion = sc.nextInt();
                


        switch (opcion){
            case 1:
                System.out.println("Usted ha seleccionando peliculas. ");
                break;
            case 2:
                System.out.println("Usted ha seleccionado Series. ");
                break;
            case 0:
                System.out.println("Usted ha salido del programa. ");
                break;
            default:
                System.out.println("Eliga una opcion valida");

        }

    }while (opcion != 0);

}

}

Tengo una duda, para qué sirve Integer.valueOf? Leí que es un tipo de casteo, pero si el usuario ingresa valores enteros porque response admitirá valores enteros, no sería mejor solo colocar:
response = sc.nextInt();
Corrijanme si estoy errada, gracias.

También conocidas como estructuras iterativas, el ciclo do- while cuya sintaxis es:

do {
      statement(s)
} while (expression);

Este ciclo también itera mientras se verifica la condición, pero a diferencia del clico while, en este caso la entrada al ciclo no está condicionada; por lo tanto, las acciones definidas dentro del do-while se ejecutaran al menos una vez

Ejemplo

class DoWhileDemo {
    public static void main(String[] args){
        int count = 1;
        do {
            System.out.println("Count is: " + count);
            count++;
        } while (count < 11);
    }
}```

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10

👾 do-while permite que se ejecute al menos una vez las sentencias. En cambio while solo permite ejecutar las sentencias si se cumple la condición.

Que pena que se hayan mostrado cosas nuevas sin hablar de ellas a detalle 😦




Problema: Al ejecutar el programa intentaba ingresar un número y obtenía error.
Solución: Modificar la línea:
response = Integer.valueOf(sc.nextLine());
De la siguiente manera:
response = Integer.valueOf(sc.nextInt());

Agregué unas cosas más

<import java.util.Scanner;
public class SentenceWhileAndDoWhile {
    public static void main(String[] args) {
        int responsise = 0;


        do{
            System.out.println("Ingresa un número: ");
            System.out.println("1. Movies");
            System.out.println("2. Series");
            System.out.println("0. Salir");

            Scanner sc = new Scanner(System.in);
          responsise = Integer.valueOf(sc.nextLine());
          switch (responsise){
              case 0:
                  System.out.println("Gracias por visitarnos");
                  break;
              case 1:
                  System.out.println("Estas en la sección de películas");
                  System.out.println("Si deseas regresar ingresa 1 ");
                  System.out.println("Si deseas salir ingrsa 0");
                  responsise = Integer.valueOf(sc.nextLine());
                  break;
              case 2:
                  System.out.println("Estas en la sección de series");
                  System.out.println("Si deseas regresar ingresa 1 ");
                  System.out.println("Si deseas salir ingrsa 0");
                  responsise = Integer.valueOf(sc.nextLine());
                  break;
              default:

                      System.out.println("Ingresaste un número equivocado");

          }

        }while(  responsise!= 0 );


    }

}> 

Practicando bucle do While 💻

Para usar la clase Scanner (por lo menos en Netbeans) hay que importarla (aunque la IDE lo hace para dar una mano, pero vale la pena mencionarlo)

import java.util.Scanner;

Scanner es una clase en el paquete java.util utilizada para obtener la entrada de los tipos primitivos como int, double etc. y también String. (Si, String no es un dato primitivo, es una clase, pero eso creo que lo veremos en el futuro)

Les recomiendo lo siguiente:
System.out.printf("Digite un numero: ")

Ya que si quieres poner el numero alado de Digite un numero podras hacerlo y se ve mas ordenado.

Paso ejemplo de como se veiria:
![](

Creo que la forma en la que explico la clase Scanner es malisima, no explico nada de lo que estaba haciendo :C

APORTE SOBRE SCANNER

La clase Scanner es parte de la biblioteca estándar de Java y se encuentra en el paquete java.util. Su principal función es analizar y procesar datos de entrada en diferentes formatos, como números, cadenas de texto y otros tipos de datos. Esta clase es ampliamente utilizada para leer la entrada del usuario desde el teclado, así como para analizar archivos de texto u otras fuentes de entrada.

Aquí hay una explicación detallada de cómo funciona la clase Scanner:

  1. La clase Scanner es parte de la biblioteca estándar de Java y se encuentra en el paquete java.util. Su principal función es analizar y procesar datos de entrada en diferentes formatos, como números, cadenas de texto y otros tipos de datos. Esta clase es ampliamente utilizada para leer la entrada del usuario desde el teclado, así como para analizar archivos de texto u otras fuentes de entrada.

Aquí hay una explicación detallada de cómo funciona la clase Scanner:

Scanner scanner = new Scanner(System.in);

  1. Métodos de lectura:
    Una vez que tienes una instancia de Scanner, puedes utilizar sus métodos para leer diferentes tipos de datos. Algunos de los métodos más comunes son:
  • next(): Lee una cadena de texto (hasta el siguiente espacio en blanco).
  • next(): Lee una cadena de texto (hasta el siguiente espacio en blanco).
  • nextDouble(): Lee un número de punto flotante (double).
  • nextFloat(): Lee un número de punto flotante de precisión simple (float).
  • nextLong(): Lee un número entero largo.
  • nextShort(): Lee un número corto.
  • nextByte(): Lee un byte.
  • nextBoolean(): Lee un valor booleano (true o false).
  • nextLine(): Lee una línea completa de texto (incluyendo espacios en blanco).

  1. Esperando la entrada del usuario:
    Cuando usas un método de lectura de Scanner, como nextInt(), el programa se detendrá y esperará a que el usuario ingrese datos. Una vez que el usuario ingresa los datos y presiona “Enter”, el método de lectura se completa y el programa continúa.

  1. Manejo de excepciones:
    Es importante tener en cuenta que los métodos de lectura de Scanner pueden generar excepciones si el tipo de dato ingresado por el usuario no coincide con lo que se espera. Por ejemplo, si se llama a nextInt() y el usuario ingresa una cadena que no puede convertirse en un entero, se generará una excepción.
    Por lo tanto, es una buena práctica envolver las llamadas a los métodos de Scanner en bloques try-catch para manejar posibles excepciones.

EJEMPLO

import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        try {
            System.out.print("Ingrese un número: ");
            int intValue = scanner.nextInt();
            System.out.println("Número ingresado: " + intValue);
        } catch (java.util.InputMismatchException e) {
            System.out.println("Ha ocurrido un error al leer el número. Asegúrate de ingresar un valor entero.");
        }

        scanner.close();
    }
}


  1. Cierre del Scanner:
    Una vez que hayas terminado de usar el objeto Scanner, es recomendable cerrarlo para liberar los recursos asociados a él, especialmente cuando se utiliza “System .in”.Puedes cerrar el Scanner usando el método close().
scanner.close();

En resumen, la clase Scanner es una herramienta poderosa para leer y analizar datos de entrada en diferentes formatos. Puedes usarla para interactuar con el usuario a través del teclado o para analizar archivos de texto según tus necesidades.

Condición: Situación a ser evaluada por la computadora

Excelente ejemplo!

Excelente explicación profe!

Siempre me ha parecido raro que el do while hay que ponerle punto y coma al final pero al while no.

Bucles do While y While
.
Bucles: ejecuta una parte de nuestro código una cantidad de veces mientras se cumpla la condición.
Do While: ejecuta nuestro código, después la evaluara.
While: evalúa que nuestro código cumpla con la condición y después ejecutara el código.
.
Ciclos infinitos: las instrucciones no se detendrán nunca si la condición no cambia.

<h1>Notas & Adición al código</h1>

Noté que cuando por ejemplo se entraba al programa algo como “dadsadadasdsajdskjfs” o “ø~ø231” en vez de integers, Java simplemente no podia guardar eso en una variable de tipo int, lo que generaba que el programa crasheara inmenentemente y mostrara algo como:

📝----TEST-MENU----📝

1)	Echo 'Hello World!'
2)	Echo 'LMFAO'
0)	Exit the program

Type here 👉 czcczxd
Exception in thread "main" java.util.InputMismatchException
	at java.base/java.util.Scanner.throwFor(Scanner.java:939)
	at java.base/java.util.Scanner.next(Scanner.java:1594)
	at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
	at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
	at DoWhileLoop.main(DoWhileLoop.java:22)

Mi solución fue:

  1. recibir el input como un String y guardarla en una variable que llamé test
  2. usar dentro de un try-catch un Integer.parseInt(test); para intentar formatear la var test (el input del usuario) a una variable que llamé uResponse en forma de Integer (ojo, int y Integer no son la misma cosa, int es un tipo de variable primitivo mientras que Integer es una wrapper class, y esta es un tipo de objeto que contiene tipos de información primitivos. En resumen, convierten datos primitivos como int, byte, short, char, etc. a objetos, y esto se hace cuando se desea modificarlos con metodos)
  3. como se intenta formatear la información recibida a un Integer, si no se puede el try-catch lo notará y capturará esta excepción, de esta manera podremos poner el mensaje que nosotros queramos y avitaremos que el programa crashee.
<h3>Code:</h3>
import java.lang.*;
import java.util.Scanner;

/**
 * DoWhileLoop
 */
public class DoWhileLoop {

    public static void main(String[] args) {
        int uResponse = 0;
        String test = "";
        //boolean testBool = false; //only if var verification is needed

        do {
            System.out.printf("\n\n📝----TEST-MENU----📝\n\n");

            System.out.printf("1)\tEcho 'Hello World!'\n");
            System.out.printf("2)\tEcho 'LMFAO'\n");
            System.out.printf("0)\tExit the program\n");

            Scanner keyboard = new Scanner(System.in);

            System.out.printf("\nType here 👉 ");


            do {
                try {
                    test = keyboard.nextLine();
                    uResponse = Integer.parseInt(test);
                    //testBool = false;
                    break;
                } catch (Exception e) {
                    System.out.printf("ERROR (❌): this program only supports integers as valid commands\n");
                    //testBool = true; //only if var verification is needed
                    System.exit(1);
                   //TODO: handle exception
                }
            } while (true);

            switch (uResponse) { // users' answer
                case 0:
                    System.out.printf("\nOkay then, see you later!\nhope I helped 😎\n\n");
                    System.exit(0);
                    break;
                case 1:
                    lines();
                    System.out.printf("\nHello World!🌎\n");
                    lines();
                    break;
                case 2:
                    lines();
                    System.out.printf("\nLMFAO!😂\n");
                    lines();
                    break;
                default:
                    System.out.printf("\nERROR (❌): command %d was not recognized...\nThe only acceptable commands are (0|1|2).\n", uResponse);
                    System.exit(1);
                    break;
            }

        } while (uResponse != 0); //user does not exits the program
    }

    public static void lines() {
        System.out.printf("----------------------------------------");
    }
}

Output #1:



📝----TEST-MENU----📝

1)	Echo 'Hello World!'
2)	Echo 'LMFAO'
0)	Exit the program

Type here 👉 1
----------------------------------------
Hello World!🌎
----------------------------------------

📝----TEST-MENU----📝

1)	Echo 'Hello World!'
2)	Echo 'LMFAO'
0)	Exit the program

Type here 👉 2
----------------------------------------
LMFAO!😂
----------------------------------------

📝----TEST-MENU----📝

1)	Echo 'Hello World!'
2)	Echo 'LMFAO'
0)	Exit the program

Type here 👉 0

Okay then, see you later!
hope I helped 😎

Output #2:



📝----TEST-MENU----📝

1)	Echo 'Hello World!'
2)	Echo 'LMFAO'
0)	Exit the program

Type here 👉 yolo
ERROR (❌): this program only supports integers as valid commands

Output #3:



📝----TEST-MENU----📝

1)	Echo 'Hello World!'
2)	Echo 'LMFAO'
0)	Exit the program

Type here 👉 ø
ERROR (❌): this program only supports integers as valid commands

Do-While es un bucle que permite una ejecución y luego evalúa si debe volver a repetirse, es el más recomendado a la hora de hacer un menú.

Comparto mi codigo de esta clase

import java.util.Scanner;

public class doWhileLoop
{
    public static void main(String[] args) {
        int response = 0;

        do {
            System.out.println("Selecciona el menu de la opcion deseada");
            System.out.println("01. Peliculas");
            System.out.println("02. Series");
            System.out.println("03. Animes");
            System.out.println("0. Salir de este menu");

            Scanner sc = new  Scanner(System.in);
            response = Integer.valueOf(sc.nextLine());

            switch (response){
                case 0:
                    System.out.println("Gracias por visitarnos");
                    break;
                case 1:
                    System.out.println("Accediste a peliculas");
                    break;
                case 2:
                    System.out.println("Accediste a series");
                    break;
                case 3:
                    System.out.println("Onichan");
                    break;
                default:
                    System.out.println("Selecciona una opcion valda-");
                    break;
            }
        }while (response != 0);
    }
}

Esto es lo que hice XD espero les guste:

import java.util.Scanner;
/**
 * @author chbrus
 * @version 1.0
 *
 * <h1>Ejemplo de uso para el loop do while </h1>
 * */

public class DoWhileLoop {
    public static void main(String[] args) {
        int response = 0;
        Scanner sc = new Scanner(System.in);

        do {
            System.out.println("Selecciona el numero de la opcion deseada");
            System.out.println("1. Escritorio");
            System.out.println("2. Descargas");
            System.out.println("3. Documentos");
            System.out.println("4. Imagenes");
            System.out.println("5. Musica");
            System.out.println("6. Salir");

            response = Integer.valueOf(sc.nextLine());

            System.out.print("\n" + "POSICION: C:/Users/cbrun/");
            switch (response)
            {
                case 1:
                    System.out.print("Escritorio/");
                    break;
                case 2:
                    System.out.print("Descargas/");
                    break;
                case 3:
                    System.out.print("Documentos/");
                    break;
                case 4:
                    System.out.print("Imagenes/");
                    break;
                case 5:
                    System.out.print("Musica/");
                    break;
                case 6:
                    System.out.println("\n" + "Gracias por usar mi programa");
                    break;
                default:
                    System.out.println("ERROR" + "\n" + "Opcion invalida");
            }
            System.out.print("\n");
        } while (response != 6);
    }
}

Solo para agregar.

Me marcaba un error al usar Scanner. Yo ya tenía el JDK 17 LTS y estoy usado neatbeans como IDE.
TUve que importar la clase abajo de package para poder usar la funcion Scanner de esta manera:

import java.util.Scanner;

Por si alguien en el futuro presenta el mismo problema.

 import java.util.Scanner;

public class DoWhileLoop2 {
    public static void main(String[] args) {
        var i =1;
        Scanner sc = new Scanner(System.in);
        var numeroTabla = sc.nextInt();
        System.out.println("Imprimiendo la tabla del: " + numeroTabla);
        do {
            System.out.println(numeroTabla + " X " + i + " = " + numeroTabla * i);
            i++;
        } while (i<=10);

    }
}

Nadie:
El ciclo do while viendo que la condición se sigue cumpliendo:

Al usar funciones para no tener que escribir en cada una `Scanner sc = new Scanner(System.in);` Podemos hacer una función general por asi decirlo `public static Scanner sc = new Scanner(System.in);` Con esto nos ahorramos el hecho de que se nos pueda pasar por alto y que asi quede más organizado
Se me ocurrió el caso en el que el usuario ingrese un valor no numérico y lo hice el programa lanzó una excepción. Para capturar este caso se debe hacer con un bloque try-catch y el código queda de la siguiente manera: ```java import java.util.InputMismatchException; import java.util.Scanner; public class DoWhileLoop { public static void main(String\[] args) { int option = -1; Scanner sc = new Scanner(System.in); do { System.out.println("MAIN MENU"); System.out.println("1. Movies"); System.out.println("2. Series"); System.out.println("0. Exit"); System.out.print("Select an option: "); try { option = sc.nextInt(); switch (option) { case 0 -> System.out.println("Thank you for visiting us."); case 1 -> System.out.println("Movies"); case 2 -> System.out.println("Series"); default -> System.out.println("Select a valid option!."); } } catch (InputMismatchException e) { System.out.println("Invalid input! Please enter a number."); sc.next(); option = -1; } } while (option != 0); System.out.println("The program will exit now."); sc.close(); } } ```

Excelente explicacion acerca del uso de el do while y el while

Excelente!

Genial, no estaba seguro como recibir un dato pero ya en esta clase lo aclare.

Excelente manera de utilizar el ciclo Do While en combinación de la herramienta Switch para crear un menú, muchas gracias por la clase

Otro gran ejemplo en el que se usa el Do While Loop puede ser como contadores o detección de fallos, aunque existen otros loops con usos más específicos a estos

Muy claro todo y muy interesante la clase Scanner.

buenisimo!

import javax.sound.midi.Soundbank;
import java.sql.SQLOutput;
import java.util.Scanner;
import java.util.function.DoubleToIntFunction;

public class DoWhileLoop {
    public static void main(String[] args) {
        int response = 0;

        do {
            System.out.println("Selecciona el numero de la opción desead");
            System.out.println("1. Movies");
            System.out.println("2. Series");
            System.out.println("0. Salir");

            Scanner sc = new Scanner(System.in);
            response = Integer.valueOf(sc.nextLine());

            switch (response){

                case 0:
                    System.out.println("Gracias por visitarnos");
                    break;
                case 1:
                    System.out.println("Movies");
                    break;
                case 2:
                    System.out.println("Series");
                    break;
                default:
                    System.out.println("Selecciona la opción correcta");
            }

        }while(response != 0);

        System.out.println("Se termino el programa");
    }
}

Excelente explicación de los bucles While y Do While

Tambien pueden agregar el case default por si el usuario ingresa un valor no contemplado en el ciclo:

 switch (responce){
                case 0:
                    System.out.println("Gracias por visitarnos");
                    break;
                case 1:
                    System.out.println("Peliculas disponibles");
                    break;
                case 2:
                    System.out.println("Series disponibles");
                    break;
                default:
                    System.out.println("Seleccione una opcion valida");
            }

Me encanto la clase!

import java.util.Scanner;

public class DoWhile {
    public static void main(String[] args) {
        menu();
    }
    /**
     * despliega un menu para acceder a peliculas o series
     * */
    public static void menu(){
        Scanner sc = new Scanner(System.in);
        int opcion;
       do{
           System.out.println("Slecciona la opcion que dese:" +
                   "\n1. Peliculas" +
                   "\n2. Series" +
                   "\n0. Salir");
           opcion = Integer.valueOf(sc.nextInt());
           switch (opcion){
               case 1:
                   System.out.println("Peliculas");
                   break;
               case 2:
                   System.out.println("Series");
                   break;
               case 0:
                   System.out.println("Gracias, vuelva pronto.");
                   break;
               default:
                   System.out.println("Selecciona una respuesta correcta.");

           }
       }while(opcion !=0);
    }
}
    public static void main(String[] args) {
        int respuesta=0;
        do{
            System.out.println("Selecciona la opcion deseada: ");
            System.out.println("1. Movies");
            System.out.println("2. Series");
            System.out.println("0. Salir");

            Scanner sc = new Scanner(System.in);
            respuesta = Integer.valueOf(sc.nextLine());

            switch (respuesta) {
                case 0:
                    System.out.println("Adios...");
                    break;
                case 1:
                    System.out.println("Elegiste peliculas");
                    break;
                case 2:
                    System.out.println("Elegiste series");
                     break;
                default:
                    System.out.println("Selecciona una opcion correcta.");
            }
        }while (respuesta !=0);
        System.out.println("Fiiiin...");
    }```

oh asi puedo crear menus basicos, genial 😃

Hace unos meses casi quemo la pc por este tipo de ciclos

Creo que lo mas interesante de esta clase y que al menos yo sabia menos fue el tema del Scanner y fue lo que menos tiempo tuvo de explicarse, pero ta…

Muy buena clase!! Apuntes
int response = 0;

   do {
        System.out.println("Selecciona el numero de la opcion deseada");
        System.out.println("1. Movies");
        System.out.println("2. Sereies");
        System.out.println("0. Salir");

        Scanner sc = new Scanner(System.in);
         response = Integer.valueOf(sc.nextLine());

          switch (response){
              case 0:
                  System.out.println("Gracias por visitarnos");
                  break;
              case 1:
                  System.out.println("Movies");
                  break;
              case 2:
                  System.out.println("Series");
                  break;
              default:
                  System.out.println("Selecciona una opcion correcta");

          }

    } while (response != 0);
   System.out.println("Se termino el programa");

Se que se puede hacer con una mejor abstraccion y mejos hardcodding pero aun no se como pasar el tipo de una funcion en otra xD asi que bueno aqui va:

import java.util.Scanner;

public class Do_While {
  public static void main(String[] args) {

    int response = 0;
    double data = 0;
    double data_2 = 0;
    
    do {
      System.out.println("Insert two numbers");

      Scanner sc0 = new Scanner(System.in);
      data = Integer.valueOf(sc0.nextLine());
      data_2 = Integer.valueOf(sc0.nextLine());

      System.out.println("Select a number of a option from the menu");
      System.out.println("[1] -> Addition");
      System.out.println("[2] -> Subtraction");
      System.out.println("[3] -> Multiplication");
      System.out.println("[4] -> Division");
      System.out.println("[0] -> Exit");

      Scanner sc = new Scanner(System.in);
      response = Integer.valueOf(sc.nextLine());
      
      switch (response) {
        case 0: 
          System.out.println("Goodbye");
          sc0.close();
          sc.close();
          break;
        case 1:
          System.out.println("-> Addition -> \t"+ add(data, data_2));
          break;
        case 2:
          System.out.println("-> Subtraction -> \t"+ sub(data, data_2));
          break;
        case 3:
          System.out.println("-> Multiplication -> \t"+ mul(data, data_2));
          break;
        case 4:
          System.out.println("-> Division -> \t"+ div(data, data_2));
          break;
        default:
          System.out.println("Invalid option");
          break;
      }
    } while (response != 0);
  }

  public static double add(double data, double data_2) {
    return data + data_2;
  }


  public static double sub(double data, double data_2) {
    return data - data_2;
  }


  public static double mul(double data, double data_2) {
    return data * data_2;
  }


  public static double div(double data, double data_2) {
    return data / data_2;
  }

}```

Genial!!

El do-while se usa cuando por lo menos en una ocasión el código que tenemos dentro se debe ejecutar, mientras que el while se utiliza en casos en los que puede que ese código no se ejecute ni una vez. 😃 😃

public class BubleWhile {

public static void main(String[] args) {
    /*
    WHILE
    --  si la condicion nunca se cumple no ingresa al blucle
     Si la condicion es verdadera ejecuta nuevamente el codigo
     Si la condicion es falsa sale del bucle
     while (condicion){
     sentencias
     }

     DO WHILE:
     Ejecuta almenos una vez.
     Entra al ciclo, verifica si la opcion se cumple y lo ejecuta nuevamente
     do {

     }while (condicion);
     */

    // EJEMPLO CON DO WHILE
    int responce=0;

    do {
        System.out.println("SELECCIONA  EL NUMERO DE LA OPCION DESEADA");
        System.out.println("1.- MOVIES");
        System.out.println("2.- SERIES");
        System.out.println("3.- EXIT");
        Scanner sc = new Scanner (System.in);
        responce = sc.nextInt();

        switch (responce){
            case 1:
                System.out.println("HA SELECCIONADO EL MENU MOVIES");
                break;
            case 2:
                System.out.println("HA SELECCIONADO EL MENU SERIES");
                break;
            case 3:
                System.out.println("HA SELECCIONADO SALIR DE LA APLICACION");
                break;
            default:
                break;
        }
       } while (responce<3 && responce>0 );
}

}

El (if) lo que hace es saltar a la instrucción POSTERIOR deseada si la condición es FALSA.
El (do while) y el (while) hacen lo mismo pero en lugar de saltar hacia una instrucción posterior lo hace hacia una ANTERIOR si la condición es VERDADERA.
La diferencia entre el (do while) y el (while) reside en el momento de hacer la pregunta. El primero lo hace DESPUÉS de ejecutarse las instrucciones y el segundo lo hace ANTES de ejecutarse las instrucciones.

public static void main(String[] args) {
int response=0;
do{
System.out.println(“SLECCIONE LA OPCION DESEADA”);
System.out.println(“1.MOVIE”);
System.out.println(“1.SERIE”);
System.out.println(“2.COMEDIA”);
System.out.println(“3.ROMANSE”);
System.out.println(“4.TERROR”);
System.out.println(“5.DOCUMENTAL”);

                            Scanner teclado=new Scanner (System.in);
                            response= Integer.valueOf(teclado.nextLine());
            switch (response){
                case 0:
                    System.out.println("gracias por visitarnos");
                    break;
                case 1:
                    System.out.println("SERIE");
                    break;
            case 2:
                    System.out.println("COMEDIA");
                    break;
            case 3:
                    System.out.println("ROMANSE");
                    break;
                        case 4:
                    System.out.println("TERROR");
                    break;
                    
                     case 5:
                    System.out.println("DOCUMENTAL");
                    break;
                    
                     default:
                         System.out.println("------SELECCIONE UNA OPCION CORRECTA-----");
            }

}while(response !=0);
System.out.println(“FIN DEL PROGRAMA”);
}

}

De regreso con el curso 😃

No se si alguno sepa usar Jupyter Lab, pero es una muy buena erramienta para practicar este tipo de ejerciciossin necidad de utilza un id

int response = 0;

do{ System.out.println(“Seleecione el número de la opción deseada”);
System.out.println(“1. Movies”);
System.out.println(“2. Series”);
System.out.println(“0. Salir”);

Scanner sc = new Scanner(System.in);
response= Integer.valueOf(sc.nextLine());

switch(response){

case 0:
System.out.println(“Gracias por visitarnos”);
break;

case 1:
System.out.println(“Movies”);
break;

case 2:
System.out.println(“Series”);
break;
default:
System.out.println(“Selecciones una opcion correcta”);

}

}while(response !=0);

import java.util.Scanner;

public class DoWhileLoop {
public static void main(String[] args) {
int response =0;

    do{
        System.out.println("Selecciona el número de la opción deseada:");
        System.out.println("1. Movies ");
        System.out.println("2. Series ");
        System.out.println("0. Salir");

        Scanner sc = new Scanner(System.in);
        response= Integer.valueOf(sc.nextLine());

        switch(response){
            case 0:
                System.out.println("Gracias por visitarnos");
                break;
            case 1:
                System.out.println("Movies");
                break;
            case 2:
                System.out.println("Series");
                break;
            default:
                System.out.println("Selecciona una opcion correcta");
        }
    }while(response !=0);
    System.out.println("Programa finalizado");
}

}
//Omar Alban Becerra

excelente

Yo no utilizo el Wrapper.

Integer.valueOf(sc)

Utilizo de la siguiete forma.

response = sc.nextInt();

Yo lo aplique a un jueguito aquí mi código.
Es importante considerar que en el caso de do primero ejecuta las instrucciones y luego verifica puede haber casos que eso haga que no funcione tu código como quieres.

import java.nio.charset.Charset;
import java.util.Scanner;

public class DoWhile {
    public static void main(String[] args) {

       boolean gameOver = false;
       boolean gameWin = false;
       char still = 's';
       int level = 0;
       do{
           System.out.println("You're Playing");
            still = requestGame();

            // playing
            if(still != 's'){
                gameOver = true;
            }else{
                level ++;
            }
            // winning
            if(level == 5){
                gameWin = true;
            }

            // printing response
           if(gameOver){
               System.out.println("GAME OVER");
           }else if(gameWin){
               System.out.println("WINNER");
           }
       }while (!gameOver && !gameWin);
    }


    /**
     * Manage the input of the game with a scanner
     * @return Char that represents that input
     * @exception StringIndexOutOfBoundsException if the string input is empty
     * @author Alejandro AS
     * */
    public static char requestGame(){
        Scanner sc = new Scanner(System.in);
        try{
            return (sc.nextLine().charAt(0));
        }catch (StringIndexOutOfBoundsException e){
            //  manage the empty string problem
            return  ' ';
        }
    }
}
<h1>Explicación mas a detalle de mi comentario</h1>
  • Assure user input type

    For this I will use nextLine() and parseInt() to see if it is an int:

    Scanner keyboard = new Scanner(System.in); 
    
    //first initialize an int var and a String test var
    
    int uResponse = 0;
    String testString = "";
    
    try {
    	System.out.printf("Type something: ");
    	//out
    	test = keyboard.nextLine();
    	uResponse = Integer.parseInt(test);
    	break;
    } catch (Exception e) {
    	//TODO: handle exception	
    	System.out.printf("ERROR (❌): this program only supports integers as valid commands\n");
      System.exit(1);         
    }
    
<h3>Why this works?</h3>

The Integer.parseInt() java method is used primarily in parsing a String method argument into an Integer object. The Integer object is a wrapper class for the int primitive data type of java API.

So technically we are converting whatever the user types, into an Integer (not an int), and so if we get something like hello 123 as an input, it will not be able to parse it; here is where the exception is generated.

Same will work for float, String, byte, among other types:

public class Test {
    public static void main(String args[]) throws Exception {

        String input;
        int ch1;
        float ch2;
        String ch3;

        Scanner one = new Scanner(System.in);

        input = one.nextLine();

        try {
            ch1 = Integer.parseInt(input);
            System.out.println("integer");
            return;
        } catch {
					(NumberFormatException e) 
				}

        try {
            ch2 = Float.parseFloat(input);
            System.out.println("float");
            return;
        } catch (NumberFormatException e) {

        }
        try {
            ch3 = String.valueOf(input);
            System.out.println("String");
        } catch (NumberFormatException e) {
/**
 * Descripción: Función que muestra un menú para seleccionar contenido multimedia
 */
public class DoWhileLoop {
    public static void main(String[] args) {
       int response = 0;

        do {
            System.out.println("Selecciona el número de la opción deseada: ");
            System.out.println("1. Películas");
            System.out.println("2. Series");
            System.out.println("0. Salir");

            Scanner scanner = new Scanner(System.in);
            response = Integer.valueOf(scanner.nextLine());

            switch(response){
                case 0:
                    System.out.println("Gracias por visitarnos");
                    break;
                case 1:
                    System.out.println("Películas");
                    break;
                case 2:
                    System.out.println("Series");
                    break;
                default:
                    System.out.println("Selecciona una opción válida");
            }
        } while (response != 0);

        System.out.println("Se terminó el programa");
    }
}

listo

Buenos días compañeros

Alguno a podido al usar IntelliJ IDEA , bajar el consumo de memoria, alguien tiene algún truco para bajar el nivel de memoria de este IDE?

public class DoWhile_31_1 {
    public static void main(String[] args){
        int tabla_1 = 1;
        int contador_1 = 1;
        int resultado = 0;

        do {
            System.out.println("Contador es: " + tabla_1 + " X " + contador_1 + " = " + resultado);
            tabla_1 = contador_1 + 1; // también podríamos declararlo como contador++; para que realice el aumento de uno mas uno.
            contador_1++;

            resultado = tabla_1 * contador_1;
        } while (tabla_1 <= 10 && contador_1 <= 10);
    }
}
 
Estaba realizando ese mismo ejercicio en java v11. No se si es por la versión pero pide serrar sc en el bloque de código.

Con do while, al menos una vez se entrará al bucle y en while sólo se entrará si se cumple la condición.

e estudiado por largo tiempo programación y esta es la primera vez que entiendo a la perfección el do while gracias @anahí

<import java.util.Scanner;

public class DoWhile {
    public static void main(String[] args) {
        int response = 0;
        do{
            System.out.println("Seleccione el número de la opción deseada");
            System.out.println("1. Movies");
            System.out.println("2. Series");
            System.out.println("0. Salir");

            Scanner sc = new Scanner(System.in);
            response = Integer.valueOf(sc.nextLine());
            switch (response){
                case 0:
                    System.out.println("Gracias por visitarnos");
                    break;
                case 1:
                    System.out.println("Movies");
                    break;
                case 2:
                    System.out.println("Series");
                    break;
                default:
                    System.out.println("Selecciona una opcion no valida");
            }
        } while (response != 0);

        System.out.println("Se terminó el programa");
    }
}
> 

Puede ser que Java no compile o exista un error como:
"Resource leak: ‘sc’ is never closed"

Para solucionarlo, es conveniente instanciar la Clase Scanner fuera del do-while, y cerrarla al finalizar el loop.

import java.util.Scanner;

public class DoWhile {
	public static void main(String[] args) {
		int response = 0;
		Scanner sc = new Scanner(System.in); // INSTANCE OF
		do {
			...
		} while (response != 0);
		sc.close(); // IMPORTANT
		System.out.println("End of the program");
	}
}
  • Una linea de codigo se va estar repitiendo tantas veces como nuestra condicion lo diga.

  • Las llaves siempre definen el scoope en el codigo.

  • Despues de la condicion se pone ;

While: Va a comenzar una sentencia con flujo estructurado, despues va entrar a una condicion (donde se pone una operacion a ser evaluada por la computadora), dependiendo del resultado booleano, si el resultado es true entonces va ejecutar una serie de sentencias que van a estar definidas en el comportamiento del while, cuando terminen las series va volver a la condicion. Hasta que la condicion no se cumpla podemos decir que se sale del ciclo, el control de flujos se sale y puede ejecutar lo que esta fuera del codigo.

Do While: dentro de las variable se dejan las variables o instrucciones

  • La diferencia entre las dos es que con while nunca va entrar al ciclo hasta que la condicion se cumpla y en el caso de Do While va entrar al ciclo y despues va a comparar.

Hice el juego de piedra papel o tijera y le incorporé un bucle do while par que se repita hasta alcanzar 3 victorias/ derrotas.

import java.util.Scanner;

public class PiedraPapelOTijera {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int victoriasJugador =0;
        int victoriasEnemigo = 0;

        do {
            System.out.println("Elige: 1 para piedra, 2 para papel, 3 para tijera");
            int valorJugador = scanner.nextInt();
            int valorEnemigo = (int) (Math.random() * 3) + 1;

            String jugador = "";
            String enemigo = "";

            switch (valorJugador) {
                case 1:
                    jugador = "piedra";
                    break;
                case 2:
                    jugador = "papel";
                    break;
                case 3:
                    jugador = "tijera";
                    break;
                default:
                    System.out.println("Selecciona una opción válida");
                    continue;

            }

            switch (valorEnemigo) {
                case 1:
                    enemigo = "piedra";
                    break;
                case 2:
                    enemigo = "papel";
                    break;
                case 3:
                    enemigo = "tijera";
                    break;
                default:
                    System.out.println("Selecciona una opción válida");
                    return;

            }
            System.out.println("Tu escogiste " + jugador + " El enemigo escogió " + enemigo);

            if (valorJugador == valorEnemigo) {
                System.out.println("Empate!");
            } else if
            ((valorJugador == 1 && valorEnemigo == 3) || (valorJugador == 2 && valorEnemigo == 1) || (valorJugador == 3 && valorEnemigo == 2)) {
                System.out.println("Ganaste!");
                victoriasJugador++;
            } else {
                System.out.println("Perdiste");
                victoriasEnemigo++;
            }

            System.out.println("Marcador: Jugador " + victoriasJugador + " - Enemigo " + victoriasEnemigo);

        } while (victoriasJugador <3 && victoriasEnemigo <3);

        if (victoriasJugador == 3) {
            System.out.println("¡Felicidades, ganaste el juego!");
        } else {
            System.out.println("El enemigo ha ganado el juego.");}
        scanner.close();
        }
    }

saludos compañeros programadores.
Mi humilde aporte DoWhile con menu de comidas. 😉
Buen provecho! jeje.

import java.util.Scanner;

public class DoWhile {
public static void main(String[] args) {

    int respuesta = 0;


    do {
        System.out.println( " Seleccione la opcion deseada ");
        System.out.println(" 1. Pastas");
        System.out.println( " 2. Asado ");
        System.out.println( " 3. Ensalada ");
        System.out.println( " 0. Ayuno ");

        Scanner sc = new Scanner(System.in);
        respuesta = Integer.valueOf(sc.nextLine());

        switch (respuesta) {
            case 0 :
                System.out.println(" Decidiste Ayunar. Debes en cuando es recomendable. ");
                break;
            case 1 :
                System.out.println( " Comeras Pastas- No te olvides de agregarle Salsa jaja");
                break;
            case 2:
                System.out.println( " Te vas a comer un asadito. Muy bien. Agregale limoncito ");
                break;
            case 3 :
                System.out.println( " Una ensaladita. Buena eleccion. Nunca viene mal algo livianito.");
                break;
            default:
                System.out.println( " Debes seleccionar una opcion . ");


        }



    }while ( respuesta != 0 );
}

}

Si te aparece Error por Scanner: ![](https://static.platzi.com/media/user_upload/image-6f8047f2-eb11-47a9-a40e-cda2dd1c0b80.jpg) Agrega en la primera linea el siguiente código: import java.util.Scanner; ![](https://static.platzi.com/media/user_upload/image-091e751e-803a-4d5f-929b-ece51298113d.jpg) ![](https://static.platzi.com/media/user_upload/image-99c645c0-df35-4833-9591-a02d58711dc4.jpg) ```java import java.util.Scanner; public class DoWhileLoop { public static void main(String[] args) { int opcion = 0; do { System.out.println("Seleccione una opcion"); System.out.println("1: Peliculas"); System.out.println("2: Series"); System.out.println("0: Salir"); Scanner sc = new Scanner(System.in); opcion = sc.nextInt(); switch (opcion) { case 1: System.out.println("Usted ha seleccionando peliculas. "); break; case 2: System.out.println("Usted ha seleccionado Series. "); break; case 0: System.out.println("Usted ha salido del programa. "); break; default: System.out.println("Eliga una opcion valida"); } } while (opcion != 0); System.out.println("Se termino el programa"); } } ```import java.util.Scanner; public class DoWhileLoop { public static void main(String\[] args) { int opcion = 0; do { System.*out*.println("Seleccione una opcion"); System.*out*.println("1: Peliculas"); System.*out*.println("2: Series"); System.*out*.println("0: Salir"); Scanner sc = new Scanner(System.*in*); opcion = sc.nextInt(); switch (opcion) { case 1: System.*out*.println("Usted ha seleccionando peliculas. "); break; case 2: System.*out*.println("Usted ha seleccionado Series. "); break; case 0: System.*out*.println("Usted ha salido del programa. "); break; default: System.*out*.println("Eliga una opcion valida"); } } while (opcion != 0); System.*out*.println("Se termino el programa"); } }
while es una estructura de control que cumple una condición no la confundamos con for ya este a diferencia de while podemos ver sus numeros de iteraciones y cambiarlos o recorrer numeros, string , charater pero ojo este no se limita puede evaluar cualquier expresión logica mientras sea verdadera en lo que respesta a while este busca una palabra o numero especifico en si while busca algo especifico e itera hasta llegar y termina el ciclo y sigue el resto de codigo. Por ultimo tenemos a do while este repetir un codigo dentro de do hasta que la condición de while se cumpla
En mi caso usé en vez de nextLine el parseInt para parsear el String del argument.public class DoWhileBucle { public static void main(String\[] args) { int response = 0; do { System.*out*.println("Please select one option"); System.*out*.println("1. Movies"); System.*out*.println("2. Series"); System.*out*.println("0. Return to the end"); Scanner sc = new Scanner(System.*in*); response = Integer.*parseInt*(sc.nextLine()); switch (response){ case 0: System.*out*.println("Please enter again a valid number"); break; case 1: System.*out*.println("You have selected Movies"); break; case 2: System.*out*.println("You have selected Series"); break; default: System.*out*.println("You have not selected any option"); } } while(response !=0); { System.*out*.println("System has finished"); } } }```js public class DoWhileBucle { public static void main(String[] args) { int response = 0; do { System.out.println("Please select one option"); System.out.println("1. Movies"); System.out.println("2. Series"); System.out.println("0. Return to the end"); Scanner sc = new Scanner(System.in); response = Integer.parseInt(sc.nextLine()); switch (response){ case 0: System.out.println("Please enter again a valid number"); break; case 1: System.out.println("You have selected Movies"); break; case 2: System.out.println("You have selected Series"); break; default: System.out.println("You have not selected any option"); } } while(response !=0); { System.out.println("System has finished"); } } } ```
pregunta ¿Por qué al momento de ingresar datos por consola se pone se le asigna la Integer.valueOF y no nextline? ejemplo: Scanner in = new Scanner (System.in); response = in.nextLine();
Iniciando <3

Método nextInt( ) :

  • Podemos utilizar este método en lugar de nextLine() y luego tener que convertirlo a un entero.

  • Es una forma más directa que nos da la clase Scanner

Les comparto como he llevado a cabo el ejemplo que se vio en la clase. Básicamente, busqué evitar reescribir ciertas partes del código, también lo trabaje de forma que se ejecute solo en el main(usando POO). Claro esto se puede mejorar aún más jaja

package temasvistos;

import java.util.Scanner;

public class doWhile {
	public int response = 0;
	
	public void selectCinema() {
		// Arreglo de cines
		String[] cine = {"cinepolis","cinemex","cinebox"};
		
		do {
			//Mostramos opciones de cinemas
			System.out.println("Selecciona el numero de la opcion deseada");
			/* Recorremos el array para obtener el nombre de los cines
			* realizamos una suma para darle formato y
			* que no se duplique el valor 0 ejem:
			* 1. cinepolis
			*/
			for(int i = 0; i < cine.length; i++) {
				System.out.println((i+1) + ". " + cine[i]);
			}
			System.out.println("0. Salir");
			
			//Obtenemos opcion elegida
			Scanner sc = new Scanner(System.in); 
			response = Integer.valueOf(sc.nextLine());
			
			switch(response) {
				case 0:
					System.out.println("Gracias por visitarnos");
				break;
				case 1:
				case 2:
				case 3:
					/*obtenemos el nombre del cine.
					 * Realizamos una resta para obtener el nombre correct ejem:
					 * cinepolis tiene la posicion 0 --> cine[0] = cinepolis
					 * por lo tanto hacemos lo siguiente:
					 * response=1
					 * cine[1-1] --> cine[0] = cinepolis
					 * */
					System.out.println("Bienvenido a " + cine[response - 1]);
				break;
				default:
					System.out.println("Selecciona una opcion correcta");
			}
			
		}while(response != 0);
		
		System.out.println("Hemos terminado");
	}
}

Excelente ejemplo de Do While

Siempre muy clara la explicación.

Super claro 😃

Todo muy claro. Gracias

Muy bien caso de uso del do-while…

do while

El bucle while solamente decide si realizar una nueva iteración basándose en el valor de la condición.

public class DoWhite {
    public static void main(String[] args) {
        int response=0;
        do{
            System.out.println("Seleccione el numero de opcion deseada");
            System.out.println("1- Caldo de Gallina");
            System.out.println("2- Cau Cau");
            System.out.println("3- Parrilla de Pollo");
            System.out.println("0-Salir");

            Scanner sc= new Scanner(System.in);
            response = Integer.valueOf(sc.nextLine());
            switch (response){
                case 0:
                    System.out.println("salir");
                     break;
                case 1:
                    System.out.println("Eligio : Caldo de Gallina");
                    break;
                case 2:
                    System.out.println("Eligio : Cau Cau");
                    break;
                case 3:
                    System.out.println("Eligio : Parrilla de Pollo");
                    break;
                default:
                    System.out.println("El plato no esta en el Menu");

            }
        }while (response !=0);```

El while si es verdad que siempre se utiliza para realizar estos tipos de menú es super útil en estos casos. Con el (\n) das un salto de linea para que la información no salga toso de manera horizontal

Todo muy claro.

import java.util.Scanner;

public class DoWhileLoop {
    public static void main(String[] args) {
        int  respose = 0;

        do{
            System.out.println("Escoge una opcc'ion");
            System.out.println("1. Peliculas");
            System.out.println("2. Series");
            System.out.println("0. Salir");

            Scanner sc = new Scanner(System.in);
            respose = Integer.valueOf(sc.nextLine());

            switch (respose){
                case 0:
                    System.out.println("Gracias por visitarnos.");
                    break;
                case 1:
                    System.out.println("Peliculas");
                    break;
                case 2:
                    System.out.println("Series");
                    break;
                default:
                    System.out.println("Selecciona una opcc'ion correcta.");
            }

        }while(respose != 0);

        System.out.println("Se termino el programa.");
    }

do-while: si queremos que se ejecute al menos una vez las sentencias
while: solo ejecutar las sentencias si se cumple la condición

en intelliJ presionen

  • ctrl + shift + enter
    antes de poner ;
    de nada 😃

interesante