Por que estou recebendo StringIndexOutOfBoundsException e como evitar?

StringIndexOutOfBoundsException ocorre quando tentamos acessar um índice inválido dentro de uma string em Java.

Por que estou recebendo StringIndexOutOfBoundsException e como evitar?

O erro StringIndexOutOfBoundsException ocorre quando tentamos acessar um índice fora dos limites de uma string em Java. Esse erro pode surgir ao tentar obter um caractere ou um trecho de string com índices inválidos.

Causas comuns do erro StringIndexOutOfBoundsException

Tentar acessar um índice negativo ou maior que o tamanho da string. Usar charAt(index) com um índice inválido. Utilizar substring(start, end) onde end é maior que o comprimento da string. Manipular strings vazias sem verificar seu tamanho.

Exemplo de erro e solução

Código que gera o erro:

public class Exemplo {
    public static void main(String[] args) {
        String texto = "Java";
        char letra = texto.charAt(10); // Lançará StringIndexOutOfBoundsException
        System.out.println(letra);
    }
}

Correção:

public class Exemplo {
    public static void main(String[] args) {
        String texto = "Java";
        if (texto.length() > 3) {
            char letra = texto.charAt(3);
            System.out.println(letra);
        } else {
            System.out.println("Índice inválido para a string");
        }
    }
}

O erro ocorre porque o índice 10 não existe dentro da string "Java". A solução correta é sempre verificar os limites da string antes de acessar um índice.

Como evitar StringIndexOutOfBoundsException?

Verifique se o índice está dentro do intervalo válido 0 a length() - 1 antes de acessar um caractere. Use if (indice >= 0 && indice < texto.length()) para evitar acessos inválidos. Evite acessar substrings sem verificar se o índice end está dentro do tamanho permitido. Utilize .isEmpty() para evitar operações em strings vazias.

public class Exemplo {
    public static void main(String[] args) {
        String texto = "Java";
        int indice = 2;
        if (indice >= 0 && indice < texto.length()) {
            System.out.println("Caractere: " + texto.charAt(indice));
        } else {
            System.out.println("Índice fora dos limites da string");
        }
    }
}

Conclusão

O erro StringIndexOutOfBoundsException pode ser evitado garantindo que os índices utilizados estejam dentro dos limites da string. Ao seguir boas práticas de verificação, podemos evitar falhas inesperadas ao manipular strings em Java.

O erro StringIndexOutOfBoundsException é um dos erros mais comuns ao manipular strings em Java. Ele ocorre devido à tentativa de acessar um índice inválido. Implementar verificações adequadas antes de acessar caracteres ou substrings é essencial para evitar esse problema.

Algumas aplicações:

  • Evitar falhas ao manipular substrings em textos
  • Garantir operações seguras ao acessar caracteres de strings
  • Prevenir erros em aplicativos que processam entradas de usuário
  • Melhorar a confiabilidade de algoritmos que utilizam manipulação de strings

Dicas para quem está começando

  • Sempre verifique se o índice está dentro dos limites antes de acessar um caractere
  • Use .length() para garantir que a string tem caracteres suficientes
  • Evite chamadas de substring() sem validar os índices de início e fim
  • Utilize tratamento de exceções para capturar e lidar com erros de índice

Contribuições de Rodrigo Farias

Compartilhe este tutorial: Por que estou recebendo StringIndexOutOfBoundsException e como evitar

Compartilhe este tutorial

Continue aprendendo:

Como solucionar IllegalStateException em Java

IllegalStateException ocorre quando um método é chamado em um estado inválido do objeto, impedindo sua execução correta.

Tutorial anterior

O que fazer quando recebo FileNotFoundException em Java

FileNotFoundException ocorre quando um arquivo não pode ser localizado no caminho especificado ao tentar acessá-lo em Java.

Próximo tutorial