Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Jorge lopez en 07 de Julio 2014, 01:36
-
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.
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.
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
-
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
-
Muchas gracias javi!
a continuacion 2 codigos replanteados tomando en cuenta tus consejos.
Bucle while
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
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!
-
Ahora mucho más claro, perfecto!