Autor Tema: Ejercicio resuelto tutorial CU00659B bucles while y do while java  (Leído 4995 veces)

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
 He logrado conseguir dos posibles soluciones para este ejercicio.

En este primer código se muestra un bucle while anidando un bucle for, donde coloque el mismo condicional if a cada bucle para que se pudiese ejecutar el break y el código trabaje como a de esperarse.

Código: [Seleccionar]
import java.util.Scanner;
public class BucleWhile{
  public static void main(String []args){
    System.out.println("Hola. \nIntroduce un texto para asi enumerar cada caracter en una columna.");
    Scanner escaner = new Scanner(System.in);
    String entrada = "";
    entrada = escaner.nextLine();
    int contador = 1;
    while(true){
        for(int i=0; i<entrada.length(); i++)
        {System.out.println("Caracter :"+ contador++ + " " + entrada.substring(i,(i+1)));
        if(contador > entrada.length()){break;}}
        if(contador > entrada.length()){break;}
     }
  }
}


y en este segundo código, se muestra un bucle do while anidando un bucle for, donde al igual que en el primer código incluí la variable int contador = 1; declarada como variable global del método main haciendo así esta variable visible tanto para los if(){break;} del primer código como para el while(); de este segundo código.

Código: [Seleccionar]
import java.util.Scanner;
public class BucleWhile{
  public static void main(String []args){
    System.out.println("Hola. \nIntroduce un texto para asi enumerar cada caracter en una columna.");
    Scanner escaner = new Scanner(System.in);
    String entrada = "";
    entrada = escaner.nextLine();
    int contador = 1;
    do{
     for(int i=0; i<entrada.length(); i++)
      {System.out.println("Caracter :"+ contador++ + " " + entrada.substring(i,(i+1)));
        }
     }while(contador < entrada.length());
  }
}

bienvenidos sean sus comentarios y consejos, salu2
« Última modificación: 13 de Mayo 2015, 11:16 por Alex Rodríguez »
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

javi in the sky

  • Avanzado
  • ****
  • Mensajes: 393
    • Ver Perfil
Re:Ejercicio! entrega CU00659B
« Respuesta #1 en: 08 de Julio 2014, 13:09 »
Hola, el primer código con el while true tiene poco sentido aunque funcione. Un bucle while se utiliza para repetir algo un número de veces que depende de la evolución de un contador, normalmente como while (contador < 10) por ejemplo. Escribir while(true) equivale a decir que el bucle se seguirá ejecutando indefinidamente (excepto si hay una salida a través de un break) pero esto no es algo normal. En general ¿para qué vamos a querer que un bucle se ejecute indefinidamente?

El segundo código también tiene poco sentido: normalmente un bucle for no se pone dentro de un bucle while, es decir, un bucle se controla con un while, un do while , o con un for, pero no tiene sentido tratar de controlar el mismo proceso con dos tipos de bucles distintos.

El ejercicio pide usar un bucle while, por tanto no debes usar bucle for.

Ten en cuenta que los bucles for pueden escribirse como bucles while. Por ejemplo:

for(int i=0; i<entrada.length(); i++){ ... }

Es equivalente a:

contador = 0;
while(contador<entrada.length()) {
...
contador = contador+1;
}

En resumen, tendrías que cambiar el diseño para usar sólo bucle while (sin break).

Saludos

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejercicio! entrega CU00659B (Reeplanteado)
« Respuesta #2 en: 08 de Julio 2014, 20:14 »
 Muchas gracias javi!
a continuacion 2 codigos replanteados tomando en cuenta tus consejos.
Bucle while
Código: [Seleccionar]
import java.util.Scanner;
public class BucleWhile{
  public static void main(String []args){
    System.out.println("Hola. \nIntroduce un texto para asi enumerar cada caracter en una columna.");
    Scanner escaner = new Scanner(System.in);
    String entrada = "";
    entrada = escaner.nextLine();
    int i = 0;
    while(i < entrada.length()){
      System.out.println("Caracter :"+ (i+1) + " " + entrada.substring(i,(i+1))); i++;
        }
     }
  }
Bucle Do while
Código: [Seleccionar]
import java.util.Scanner;
public class BucleWhile{
  public static void main(String []args){
    System.out.println("Hola. \nIntroduce un texto para asi enumerar cada caracter en una columna.");
    Scanner escaner = new Scanner(System.in);
    String entrada = "";
    entrada = escaner.nextLine();
    int i = 0;
       do{
            System.out.println("Caracter :"+ (i+1) + " " + entrada.substring(i,(i+1))); i++;
    }  while(i < entrada.length());
  }
}
Salu2!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

javi in the sky

  • Avanzado
  • ****
  • Mensajes: 393
    • Ver Perfil
Re:Ejercicio! entrega CU00659B
« Respuesta #3 en: 09 de Julio 2014, 11:04 »
Ahora mucho más claro, perfecto!

 

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