¿Por qué obtengo el índice de cadenas fuera de rango?

Cadena esencialmente es una serie de caracteres. Cuando veas:

String myString = “Cadena personalizada”;

Realmente tienes:

char [] charsFromMyString =
{‘C’, ‘u’, ‘s’, ‘t’, ‘o’, ‘m’, ”, ‘s’, ‘t’, ‘r’, ‘i’, ‘n’, ‘g ‘};

Cuando desee un carácter específico en una posición específica, debe tener en cuenta la longitud y el índice de cada carácter.

Longitud de myString = 13.

Índices disponibles = de 0 a 12.

Si tiene un error de tipo “fuera de rango” es porque desea, por ejemplo, el último carácter (g en el ejemplo) e intenta obtenerlo como:

char myChar = myString.charAt (13); // KABOOOM fuera de rango, el último índice es 12

// la forma correcta es:
char myChar = myString.chatAt (12); //¡bueno!

Por lo tanto, debe tener cuidado, una cosa es obtener el tamaño (longitud) de su Cadena, y otra es obtener un carácter en un índice específico .

StringIndexOutOfBoundsException: arrojado por los métodos String para indicar que un índice es negativo o mayor que el tamaño de la cadena. Para algunos métodos, como el método charAt, esta excepción también se produce cuando el índice es igual al tamaño de la cadena.

StringIndexOutOfBoundsException (Java Platform SE 7)

Supongamos que define una matriz de tamaño 5

int [] arr = nuevo int [5];

(cuando definimos una matriz de tipo primitiva, Java inicialmente llena la matriz con valores predeterminados. Dado que hemos utilizado una matriz de tipo entero, inicialmente contiene todos los 0)

Entonces, los índices son 0,1,2,3,4 (Java, como la mayoría de los lenguajes de programación usan un sistema de índice basado en 0) si intenta acceder / cambiar el valor que está fuera del índice (valor> 4) error de aumento de Java (Índice fuera de rango)

Lo más probable es que se deba a la inclusión frente a la exclusión en cualquier método que esté utilizando. También podría ser un apagado por 1. Lee el javadoc de lo que sea que estés usando. Debería arreglarte.

La cadena es en realidad una matriz de caracteres. Entonces, el índice fuera de rango (obviamente) significa que está intentando acceder a un carácter en el índice más grande que el tamaño de las matrices.