Autor Tema: diseño bucle while con break? condición de salida salir por la ventana CU00659B  (Leído 3250 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas a todos.

Os dejo una posible solución del ejercicio CU00659B del curso Java desde cero.

Citar
EJERCICIO

Crea una clase con un método main que pida una entrada de teclado y usando un bucle while, el método length de la clase String y el método substring de la clase String, muestre cada una de las letras que componen la entrada. Por ejemplo si se introduce “ave” debe mostrar:

Letra 1: a
Letra 2: v
Letra 3: e

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java

public class BucleWhile{

    public static void main(String []args){
        System.out.println("Introduzca una cadena de texto");
        String msg = "";
        Scanner entradaPorConsola = new Scanner(System.in); //Creación de un objeto Scanner
        msg = entradaPorConsola.nextLine(); //Invocación un método sobre un objeto Scanner
        int i=0;
        while(i<msg.length()){
            System.out.println("Letra "+(i+1)+":"+msg.substring(i,i+1));
            i++;
            if(i==msg.length()){break;}
        }
    }
}

Gracias
« Última modificación: 04 de Marzo 2016, 10:42 por Mario R. Rancel »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Buenos días, aunque el código funciona deberías corregir una línea errónea

La línea if(i==msg.length()){break;} no es útil, ya que la condición de entrada al bucle es while(i<msg.length()). Si i fuera i==msg.length() no se habría entrado al bucle. Esto significa que esa condición nunca se va a cumplir. Si nunca se va a cumplir no tiene sentido tener esa línea ahí.

El otro motivo para no tener esa línea ahí es que en un bucle while siempre debe producirse la salida del bucle a través de la condición del bucle. Una salida con break solo debe usarse en casos excepcionales donde sea estrictamente necesario usar el break.

Si lees comentarios en otros hilos, salir de un while con un break se compara con salir de una casa por la ventana ¿Se consideraría correcto salir de una casa por la ventana pudiendo salir por la puerta? No, por eso en un bucle while se debe salir del bucle a través de su condición en lugar de a través de un break.

Saludos

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas, Mario.

Ahora entiendo. Había entendido más la condición de salida del bucle "while". Es decir, mientras se cumple la condición de "while - mientras" se repiten las instrucciones del bucle, pero a la que no se cumple ya la condición se saldrá del bucle. Es decir, cuando "i<msg.length()" ya no cumple esta condición ya se saldrá del bucle, o sea, no hace falta de un "break".

Por lo entendido, el código quedará de la siguiente manera:

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java

public class BucleWhile{

    public static void main(String []args){
        System.out.println("Introduzca una cadena de texto");
        String msg = "";
        Scanner entradaPorConsola = new Scanner(System.in); //Creación de un objeto Scanner
        msg = entradaPorConsola.nextLine(); //Invocación un método sobre un objeto Scanner
        int i=0;
        while(i<msg.length()){
            System.out.println("Letra "+(i+1)+":"+msg.substring(i,i+1));
            i++;
        }
    }
}


Lo único que he hecho es eliminar la línea:

Código: [Seleccionar]
if(i==msg.length()){break;}
Gracias.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".