miércoles, 15 de marzo de 2023

While & Do While

While

 

El while en Java es una estructura de control de flujo que se utiliza para repetir un bloque de código mientras se cumpla una determinada condición. La sintaxis básica del while en Java es la siguiente:

 

while (condición) {

   // código a repetir

}

 

En la línea de la condición, se especifica una expresión booleana que se evalúa antes de cada iteración. Si la expresión es verdadera, el bloque de código dentro del while se ejecuta una vez más. Si la expresión es falsa, el programa sale del ciclo y continúa con la ejecución normal.

 

El bloque de código dentro del while puede contener cualquier instrucción válida en Java, incluyendo sentencias de control de flujo como if, else y break. Es importante tener en cuenta que si la condición nunca se evalúa a false, el ciclo continuará ejecutándose indefinidamente, lo que se conoce como un "bucle infinito".

 

Por ejemplo, el siguiente código utiliza un while para imprimir los números del 1 al 10:

 

int i = 1;

while (i <= 10) {

   System.out.println(i);

   i++;

}

 

En este caso, la condición i <= 10 se evalúa antes de cada iteración. Si i es menor o igual a 10, el bloque de código dentro del while se ejecuta, imprimiendo el valor actual de i y luego incrementando el valor de i en 1. El ciclo continúa hasta que i alcanza el valor de 11, momento en el que la condición i <= 10 ya no es verdadera y el ciclo se detiene.

 

Do while

El do-while en Java es otra estructura de control de flujo que se utiliza para repetir un bloque de código mientras se cumpla una determinada condición. La principal diferencia entre el while y el do-while es que en el do-while, el bloque de código se ejecuta al menos una vez antes de que se evalúe la condición.

 

La sintaxis básica del do-while en Java es la siguiente:

 

Copy code

do {

   // código a repetir

} while (condición);

 

En este caso, el bloque de código se ejecuta primero, sin importar la condición. Luego, después de que el bloque de código se ha ejecutado una vez, se evalúa la condición. Si la condición es verdadera, el bloque de código se ejecutará de nuevo. Si la condición es falsa, el programa saldrá del ciclo y continuará con la ejecución normal.

 

Al igual que con el while, el bloque de código dentro del do-while puede contener cualquier instrucción válida en Java, incluyendo sentencias de control de flujo como if, else y break. También es importante tener en cuenta que si la condición nunca se evalúa a false, el ciclo continuará ejecutándose indefinidamente, lo que se conoce como un "bucle infinito".

 

Por ejemplo, el siguiente código utiliza un do-while para imprimir los números del 1 al 10:

 

int i = 1;

do {

   System.out.println(i);

   i++;

} while (i <= 10);

 

En este caso, el bloque de código dentro del do imprime el valor actual de i y luego incrementa el valor de i en 1. 

Luego, después de que el bloque de código se ha ejecutado una vez, la condición i <= 10 se evalúa. 

Si i es menor o igual a 10, el ciclo continuará, imprimiendo y aumentando el valor de i hasta que i alcance el valor de 11, momento en el que la condición i <= 10 ya no es verdadera y el ciclo se detiene.

Scanner

La clase Scanner está disponible a partir de Java 5 y facilita la lectura de datos en los programas Java.

Primero veremos varios ejemplos de lectura de datos en Java con Scanner y después explicaremos en detalle como funciona.
Para utilizar Scanner en el programa tendremos que hacer lo siguiente:
 
1. Escribir el import
La clase Scanner se encuentra en el paquete java.util por lo tanto se debe incluir al inicio del programa la instrucción:
import java.util.Scanner;
2. Crear un objeto Scanner
Tenemos que crear un objeto de la clase Scanner asociado al dispositivo de entrada.
Si el dispositivo de entrada es el teclado escribiremos:
Scanner sc = new Scanner(System.in);
Se ha creado el objeto sc asociado al teclado representado por System.in
Una vez hecho esto podemos leer datos por teclado. 
3. Utilizar el Scanner
Para leer datos desde teclado con Scanner podemos usar los métodos nextXxx() donde Xxx indica el tipo de dato a leer:
  • nextByte()  para leer un dato de tipo byte.
  • nextShort()  para leer un dato de tipo short.
  • nextInt()  para leer un dato de tipo int.
  • nextLong()  para leer un dato de tipo long. 
  • nextFloat()  para leer un dato de tipo float. 
  • nextDouble()  para leer un dato de tipo double. 
  • nextBoolean()  para leer un dato de tipo boolean.
  • nextLine()  para leer un String hasta encontrar un salto de línea.
  • next()  para leer un String hasta el primer delimitador, generalmente hasta un espacio en blanco o hasta un salto de línea.  
 
Ejemplos de lectura:
Ejemplo de lectura por teclado de un número entero (tipo int):
int n;
System.out.print("Introduzca un número entero: ");
n = sc.nextInt(); //asigna a la variable n el número entero introducido por teclado    
Ejemplo de lectura de un número de tipo double:
double x;
System.out.print("Introduzca número de tipo double: ");
x = sc.nextDouble(); //asigna a la variable x el número double introducido por teclado 
Ejemplo de lectura de una cadena de caracteres (String):
String s;
System.out.print("Introduzca texto: ");
s = sc.nextLine(); //asigna a la variable s el String introducido por teclado          
Ejemplo de lectura de un número de tipo long:
long ln;
System.out.print("Introduzca un número: ");
ln = sc.nextLong(); //asigna a la variable ln el número long introducido por teclado   
Si el valor introducido por teclado no es del tipo esperado o de un tipo compatible al esperado, se produce un error. En este caso se lanza la excepción InputMismatchException
Ejemplo completo de programa Java con lectura de datos con Scanner:
El programa pide al usuario que introduzca por teclado su nombre y lo muestra por pantalla. A continuación pide que se introduzca por rteclado el valor del radio de una circunferencia de tipo double y muestra la longitud de la circunferencia. Además pide que se introduzca por teclado un número entero y muestra su cuadrado.

import java.util.Scanner;  //import de la clase Scanner

public class Ejemplo1Scanner {

    public static void main(String[] args) {  

           Scanner sc = new Scanner(System.in);  //Se crea un objeto Scanner
           String nombre;
           double radio;
           int n;

           System.out.print("Introduzca su nombre: ");       
           nombre = sc.nextLine();  //leer un String
           System.out.println("Hola " + nombre + "!!!");

           System.out.print("Introduzca el radio de la circunferencia: ");
           radio = sc.nextDouble(); //leer un double
           System.out.println("Longitud de la circunferencia: " + 2*Math.PI*radio);                
           
           System.out.print("Introduzca un número entero: ");
           n = sc.nextInt(); //leer un entero
           System.out.println("El cuadrado es: " + Math.pow(n,2));
     }
}

Libro

Desarrollo de aplicaciones web dinámicas con PHP. N.p., Iván Soria Solís, 2021. Desarrollo de aplicaciones web dinámicas con PHP