61
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Re:java.lang.StringIndexOutOfBoundsException: String index out of range: 1 CU00659B
« en: 13 de Octubre 2018, 13:33 »
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.
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.
![Gui�ar ;)](https://aprenderaprogramar.com/foros/Smileys/default/wink.gif)