Fiz esse CAÇA-PALAVRAS e preciso fazer com que a pessoa não possa digitar números e nem caracteres especiais. Caso digitar, exibir um aviso. Alguém consegue me ajudar?

package caça.palavras;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class CAÇAPALAVRAS {

public static boolean verificarPalavra(String palavra, String[] tamanhoPalavra, String letra) {
    //verificar se a palavra esta ok
    boolean acertouLetra = false;

    for (int i = 0; i < palavra.length(); i++) {
        String posicaoLetra = palavra.charAt(i) + "";
        if (posicaoLetra.equals(letra)) {
            tamanhoPalavra[i] = letra;
            acertouLetra = true;
        }
    }

    return acertouLetra; //retornar os valores que a função foi chamanda

}

public static void acertou(int qtdAcertou, String palavra) {
    if (qtdAcertou == palavra.length()) {

        System.out.println("");
        System.out.println("PARABÉNS, VOCÊ VENCEU!");
        System.exit(0);
    } 
    
}

public static int tenteNovamente(boolean acertouLetra, int tentativas) {

    if (acertouLetra == false) {
        System.out.println("");
        System.out.println("ESSA LETRA NÃO ESTÁ NA PALAVRA OU NÃO É UMA LETRA.");
        System.out.println("TENTE NOVAMENTE.");

        tentativas = tentativas - 1;

        System.out.println("SEU NÚMERO DE TENTATIVAS AGORA É: " + tentativas);
        System.out.println("");

    }

    return tentativas;

}

public static void exibirPalavra(String palavra, String[] tamanhoPalavra, int qtdAcertou) {

    for (int i = 0; i < palavra.length(); i++) {
        System.out.print(tamanhoPalavra[i].toUpperCase() + " ");
    }

    acertou(qtdAcertou, palavra);
}

public static void main(String[] args) throws IOException {

    String letra = "";
    int tentativas = 0;
    String palavra = "";
    boolean acertouLetra = false;
    String[] tamanhoPalavra = new String[30];
    int qtdAcertou = 0;

    BufferedReader leitura = new BufferedReader(new InputStreamReader(System.in));

    System.out.println("");
    System.out.println(">>> CAÇA-PALAVRAS <<<");
    System.out.println("");
    System.out.println(" DIGITE UMA PALAVRA: ");

    palavra = leitura.readLine().toUpperCase();

    System.out.println("");
    System.out.println("VOCÊ DIGITOU A PALAVRA: " + palavra.toUpperCase());
    System.out.println("");
    tentativas = 5;

    for (int i = 0; i < palavra.length(); i++) {
        tamanhoPalavra[i] = " _";
        System.out.print(tamanhoPalavra[i] + "");
    }

    System.out.println("");
    acertou(qtdAcertou, palavra);

    while (tentativas <= 5 && tentativas != 0) {
        acertouLetra = false;

        if (tentativas != 0) {
            System.out.println("");
            System.out.println("DIGITE APENAS UMA LETRA: ");

            letra = leitura.readLine().toUpperCase();

            System.out.println("");
            System.out.println("VOCÊ DIGITOU A LETRA: " + letra.toUpperCase());

            acertouLetra = verificarPalavra(palavra, tamanhoPalavra, letra);

            if (acertouLetra == true) {
                qtdAcertou++;
            }

        }

        tentativas = tenteNovamente(acertouLetra, tentativas);

        if (tentativas == 0) {

            System.out.println("");
            System.out.println("VOCÊ ZEROU SUAS TENTATIVAS! PERDEU. ");
            System.exit(0);
        }

        exibirPalavra(palavra, tamanhoPalavra, qtdAcertou);
    }
}

}

Apesar de permitido, evite usar caracteres acentuados, cedilhas etc. ao nomear suas classes e pacotes. Quanto ao seu problema, se vc tratar a letra como um caractere (que faz muito mais sentido), fica bem mais fácil resolver o que você precisa.

Por exemplo:

char letra = 'ç';
if ( letra >= 'A' && letra <= 'z' ) {
    // ok, a letra está no intervalo de A...Za...z
} else {
    // qq coisa, menos uma letra latina não acentuada.
}

Uma coisa que eu não entendo é como uma classe como a Scanner, que já tem quase 20 anos de idade (está no JDK desde a versão 5), não é usada por alguns professores.