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.