Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 3

boa tarde, sou novo em java e tenho uma atividade da faculdade para fazer, onde devo pegar uma String e verificar se ela é ou n palíndromo, porem quando executo o program ele me aparece o erro Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 3
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
at java.base/java.lang.String.charAt(String.java:693)
at PalindromoJava.isPalindromo(PalindromoJava.java:11)
at PalindromoJava.main(PalindromoJava.java:46).

Alguém pode me ajudar??
Meu código esta a seguir:

public class PalindromoJava {

    public static boolean isPalindromo (String s){
        
        boolean resp = false;
        String aux = "";

        for(int i = (s.length()-1); i >= 0; i++){
            aux = aux + s.charAt(i);
        }

        for(int j = 0; j<s.length()-1; j++){
            if(s.charAt(j) != aux.charAt(j)){
                resp = false;
            }else{
                resp = true;
            }
        }
        return resp;

    }
    
    public static boolean isFim(String s){
        return (s.length() == 3 && s.charAt(0) == 'F' && s.charAt(1) == 'I' && s.charAt(2) == 'M');
    }

    public static void main(String[] args) {
        
        /* Inicio - Leitura da entrada padrao */

        String[] entrada = new String[1000];
        int line = 0;

        do {
            entrada[line] = MyIO.readLine();
        } while (isFim(entrada[line++]) == false);
        line--;   //Desconsiderar ultima linha contendo a palavra FIM

        /* Fim - Leitura da entrada padrao */


        for(int i = 0; i <= line; i++){
            
            if(isPalindromo(entrada[i]) == true){
                MyIO.println("Sim");
            }else{
                MyIO.println("Não");
            }
            
        }
    }
}

O i começa pelo último caractere, mas depois você incrementa (i++), ou seja, ele vai pegar um índice depois do último (que não existe, daí o erro de “index out of bounds”).

Como você começa do último e quer fazer o loop até o primeiro, o certo é decrementar:

for (int i = (s.length() - 1); i >= 0; i--) {
                                        ^^

Aproveitando, dá pra simplificar o código. Para comparar se a string digitada é “FIM”, use o método equals.

E para ver se é palíndromo, não precisa construir outra string. Basta comparar o primeiro caractere com o último, o segundo com o penúltimo e assim por diante, e faça isso até a metade da string. Mas se no meio do caminho encontrar caracteres diferentes, já pode retornar false.

E não precisa fazer if (algo == true) ou if (algo == false), isso pode ser trocado respectivamente por if (algo) e if (! algo):

public static boolean isPalindromo(String s) {
    int limite = s.length() / 2; // só preciso ir até a metade
    for (int i = 0; i < limite; i++) {
        // compara o primeiro com o último, segundo com penúltimo, etc
        if (s.charAt(i) != s.charAt(s.length() - i - 1)) {
            // encontrei caractere diferente, não é palíndromo então já pode retornar
            // (nem precisa verificar o resto)
            return false;
        }
    }
    return true;
}

public static boolean isFim(String s) {
    return "FIM".equals(s); // não complique, use equals
}

public static void main(String[] args) {
    String[] entrada = new String[1000];
    int line = 0;
    while (true) {
        String linha = MyIO.readLine();
        if (isFim(linha)) {
            break; // sai do while (true)
        }
        entrada[line++] = linha;
    }

    for (int i = 0; i < line; i++) {
        if (isPalindromo(entrada[i])) {
            MyIO.println(entrada[i] + " é palíndromo");
        } else {
            MyIO.println(entrada[i] + " não é palíndromo");
        }
    }
}

obgdo hugo, agr que vi essa bobera.
Em relação ao resto do codigo, eh que é uma atividade onde a questão não me deixa usar outros metodos alem do charAt e do lenght, poer isso esta nesse formato.
Obgdo pela ajuda, grande abraço!