Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: paramonso en 18 de Septiembre 2018, 17:23
-
Hola. Dejo el Ejercicio resuelto (CU00659B).Tema While y do while en Java (ciclos o bucles) del tutorial gratuito de programación orientada a objetos.
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
//Código de nuestra clase principal ejemplo aprenderaprogramar.com
public class EjercicicioCU00659B {
public static void main (String [ ] args) {
System.out.print("BUCLES DO..... WHILE\n\n");
System.out.print ("Empezamos el programa\n");
System.out.print ("Por favor introduzca una cadena por teclado:\n ");
String entradaTeclado = "";
Scanner entradaEscaner = new Scanner (System.in); //Creación de un objeto Scanner
entradaTeclado = entradaEscaner.nextLine (); //Invocamos un método sobre un objeto Scanner
//y se obtiene un string introducido por el teclado
int i=0;
do {
System.out.print("Letra " + (i+1) + ": ");
System.out.print(entradaTeclado.substring(0+i,i+1) +"\n");
i +=1;
}
while(i<entradaTeclado.length());
} //Cierre del main
} //Cierre de la clase
Gracias. ;)
-
Buenas, todo bien, el código cumple con lo que se pedía. Como comentamos en otro hilo, 0+i es lo mismo que i, luego sobra sumarle cero ;) Aunque no es objeto de este ejercicio dejo alguna pregunta planteada para quien quiera responderla. Si cuando nos pide la cadena pulsamos enter directamente (sin introducir ningún carácter), salta un error
java.lang.StringIndexOutOfBoundsException: String index out of range: 1
¿Por qué? ¿Cómo podríamos mejorar el código para que no salte ese error?
Otra curiosidad: en la octava línea, entre usar String entradaTeclado = ""; y String entradaTeclado; ¿Cuál es la diferencia? ¿Qué efecto tiene en el programa hacerlo de una manera u otra?
Salu2
-
Hola Ogramar. Buenas preguntas. Voy a intentar darles respuestas.
Si cuando nos pide la cadena pulsamos enter directamente (sin introducir ningún carácter), salta un error
java.lang.StringIndexOutOfBoundsException: String index out of range: 1
¿Por qué? Por que hay un indice fuera de rango o sea que se ha excedido el numero de indices del array o elemento que utiliza los indices.
¿Cómo podríamos mejorar el código para que no salte ese error?
Con un condicional.
Preguntando ( en este caso en concreto que salta el error cuando no hay elementos en la matriz) si la longitud de ese array o elemento es cero que no ejecute la siguiente instrucción del programa. En otros casos habría que analizar que no entrase en la instrucción si se excede la matriz.
int i=0;
do {
System.out.print("Letra " + (i) + ": ");
if(entradaTeclado.length()!=0){
System.out.print(entradaTeclado.substring(i,i+1) +"\n");
}
i +=1;
}
while(i<entradaTeclado.length());
Otra curiosidad: en la octava línea, entre usar String entradaTeclado = ""; y String entradaTeclado; ¿Cuál es la diferencia?
Ninguna.
Ya que si no se inicializan las variables, por defecto Java las inicializa a cero o null.
Pero es una buena practica acostumbrarse a inicializar las variables antes de su uso para evitarnos errores.
¿Qué efecto tiene en el programa hacerlo de una manera u otra?
El efecto es el mismo se inicialice así String entradaTeclado = "" o así String entradaTeclado
.Como comento en la pregunta anterior, Java las inicia con valores nulos, vacíos o a cero.
Un saludo. ;)
-
Estoy de acuerdo con las respuestas. Salu2.