Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: luis sanz en 11 de Agosto 2015, 15:56

Título: Java bucle while true mala práctica como condición mal diseño CU00659B
Publicado por: luis sanz en 11 de Agosto 2015, 15:56
Código propuesto como respuesta al ejercicio:

Código: [Seleccionar]
import java.util.Scanner;

public class Bucle
{
    public static void main(String[] args)
    {
        System.out.println("Ingrese un texto:");
        String teclado="";
        Scanner escaner=new Scanner(System.in);
        teclado=escaner.nextLine();
       
        int longitudPalabra=teclado.length();
        int c=0;
        while(true)
        {
         
            String letra="";
            letra=teclado.substring(c,c+1);
            System.out.println("Letra "+(c+1)+" :"+letra);
            c=c+1;
            if(c==longitudPalabra)
            {break;}
           
        }
       
    }
}
Título: Re:CU00659B AAP JAVA - BUCLE WHILE
Publicado por: RaGa en 12 de Agosto 2015, 17:34
Hola Luis:

Estuve analizando tu ejercicio y veo que cumple con la consigna del ejercicio. Sin embargo tenemos que revisar un punto importante.

Utilizas un bucle while cuya condición es 'true'.

Es decir que el bucle while(true) será infinito hasta que se encuentre la sentencia break.

Bueno, he de decirte que esto no conforma una buena práctica, no corresponde a un buen diseño de bucle.

Siempre trataremos de resolver el problema evitando tener que salir del bucle a través de break.

Siempre intentaremos salir del bucle while cuando deje de cumplirse la condición entre sus paréntesis.

Para este caso particular la condición de abandonar el while lo podemos relacionar con la longitud de la palabra ingresada por teclado.

Código: [Seleccionar]
import java.util.Scanner;

public class Bucle
{
    public static void main(String[] args)
    {
        System.out.println("Ingrese un texto:");
        String teclado="";
        Scanner escaner=new Scanner(System.in);
        teclado=escaner.nextLine();
       
        int longitudPalabra=teclado.length();
        int c=0;
        while(c < longitudPalabra)
        {
         
            String letra="";
            letra=teclado.substring(c,c+1);
            System.out.println("Letra "+(c+1)+" :"+letra);
            c=c+1;
           
        }
       
    }
}

Analízalo y cualquier duda lo seguimos revisando.