Arreglar Java.Lang.StringIndexOutOfBoundsException: índice de cadena fuera de rango

Sheeraz Gul 12 octubre 2023
Arreglar Java.Lang.StringIndexOutOfBoundsException: índice de cadena fuera de rango

Este tutorial demuestra el error Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0 en Java.

Solucione el error java.lang.StringIndexOutOfBoundsException: índice de cadena fuera de rango

La StringIndexOutofBoundsException es una excepción no verificada que ocurre cuando se accede al carácter de una cadena cuyo índice es negativo o mayor que la longitud de la cadena. Esta excepción también se lanza cuando usamos el método charAt(), que intenta acceder a un carácter que no está en el String.

Debido a que StringIndexOutofBoundsException es una excepción no verificada, no necesita agregarse a los lanzamientos de un método o constructor; podemos manejarlo usando el bloque try-catch. Estos son los escenarios específicos donde puede ocurrir esta excepción:

  1. Al usar String.charAt(int index), que devolverá un carácter en un índice de cadena determinado. Si el índice es negativo o mayor que la longitud de String, arrojará la excepción StringIndexOutofBoundsException..
  2. Cuando se usa String.valueOf(char[] data, int offset, int count) que devuelve una cadena con argumentos dados. Lanzará la excepción StringIndexOutofBoundsException cuando cualquier índice sea negativo o offset + count sea mayor que el tamaño de la matriz.
  3. Al usar CharSequence.subSequence(int beginIndex, int endIndex) que devuelve una secuencia de caracteres. Lanzará la excepción StringIndexOutofBoundsException cuando beginIndex sea mayor que endIndex o endIndex sea mayor que la longitud de la cadena.
  4. Al usar String.substring(int beginIndex), que devuelve una subcadena de la Cadena dada. Lanzará la excepción StringIndexOutofBoundsException cuando beginIndex sea negativo o mayor que la longitud de la cadena.
  5. Al usar String.substring(int beginIndex, int endIndex), que devuelve una subcadena entre un rango específico. Lanzará la excepción StringIndexOutofBoundsException cuando cualquier índice sea negativo, o endIndex sea mayor que la longitud de la cadena de beginIndex sea mayor que endIndex.

Probemos un ejemplo para StringIndexOutofBoundsException. Ver ejemplo:

package delftstack;

public class Example {
  public static void main(String[] arg) {
    String DemoStr = "delftstack";
    System.out.println(DemoStr.charAt(11));
  }
}

El código anterior arrojará StringIndexOutofBoundsException porque no hay ningún carácter en el índice 11. Vea el resultado:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 11
    at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
    at java.base/java.lang.String.charAt(String.java:1512)
    at delftstack.Example.main(Example.java:7)

La StringIndexOutOfBoundsException se puede manejar usando bloques try-catch. Ver solución:

package delftstack;

public class Example {
  public static void main(String[] arg) {
    String DemoStr = "delftstack";
    try {
      System.out.println(DemoStr.charAt(11));
    } catch (StringIndexOutOfBoundsException e) {
      System.out.println("Please insert a index under String length: " + DemoStr.length());
    }
  }
}

Ahora la salida para el código anterior es:

Please insert a index under String length: 10
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - Java Error