Palindrome duvida

me ajude a corrigir o erro que minha cabeça travou!!!
nesse codigo ele exclui a primeira letra e verifica se é palindrome se não for ele exclui a ultima e verifica novamente e se tiver numero ele dá entrada invalida.

package palindrome;

public class Palindrome
{
	public static void main(String[] args) {
		System.out.println(isPalindrome("", 0));
		
	}
	
	public static String isPalindrome(String txt, int entry) {
	    String[] reverso = new String[] {};
	    int y = 0;
	    int i = txt.length() -1;
	    boolean hasNumber = false;
	    
	    if(entry == 1)
	        txt = txt.substring(1, txt.length());

	    if(entry == 2)
	        txt = txt.substring(0, txt.length() -1);

	    if(entry >= 3) 
	        return "Sem Resultados";

	    while(i > -1) {
	        reverso.push(String.valueOf(txt.charAt(i)?));
	        hasNumber = Integer.parseInt(txt.charAt(i)) ? true : false;
	        
	        if(hasNumber)
	            break;

	        i--;
	        y++;
	    }

	    if(hasNumber)
	        return "Entrada Inválida";

	    
	    String res = txt == reverso.join("") ? reverso.join("") : "Sem Resultados";

	    if(res == "Sem Resultados")
	        return isPalindrome(txt, entry + 1)
	    else 
	        return res;
	}

}

Palíndromos são frases ou palavras que podem ser lidas, indiferentemente, da esquerda para a direita, conforme o sentido habitual da leitura, ou da direita para a esquerda, sem que haja mudança da sua significação. São também chamados de anacíclicos. Ref - https://www.normaculta.com.br/palindromo-exemplos-de-palavras-e-frases/

Código:


Você precisa primeiro limpar a string para ter um padrão sem acentuação:

public static String removerAcentos(String str) {
    return Normalizer.normalize(str, Normalizer.Form.NFD)
              .replaceAll("[^\\p{ASCII}]", "");
}

Depois precisa inverter:


public static String inverterString(String str) {
        StringBuilder sb = new StringBuilder(str);
        return sb.reverse().toString();
}

e testando:

String c = removerAcentos("alã");
String v = inverterString(c);    
if (c.equals(v)) {
    System.out.println("é um palidromo");
} else {
    System.out.println("não é um palidromo");
}

São palavras mas a lógica que estou tentanto é diferente, ele testa um substring primeiro tira o primeiro char e testa nao sendo palindrome ele tira o ultimo e testa de novo e as saidas eu coloco o resultado, se tiver int dá inválido.

A sua lógica é ruim, porque está fazendo assim? Quais os motivos e número não deveriam ter

estou fazendo um exercicio e ele pede assim.

Poste o exercicio

editado

Tem que fazer uma outra função para buscar no caso que eu entendi as letras semelhantes: busqueSubSequencia

public static String busqueSubSequencia(String str){        
    char p1 = '0';
    char p2 = '0';
    do {
        p1 = str.charAt(0);
        p2 = str.charAt(str.length() - 1);
        if (p1 != p2){
            str = str.substring(1, str.length() - 1);
        }            
    } while (p1 != p2);        
    return str;
}
public static String inverterString(String str) {
    StringBuilder sb = new StringBuilder(str);
    return sb.reverse().toString();
}
public static String removerAcentos(String str) {
    return Normalizer.normalize(str, Normalizer.Form.NFD)
            .replaceAll("[^\\p{ASCII}]", "");
}

E no código

String c = removerAcentos("BANANAS");
c = busqueSubSequencia(c);
String v = inverterString(c);
System.out.println(v);
if (c.equals(v)  && c.length() > 1) {
    System.out.print("é um palidromo: ");
    System.out.println(c);
} else {
    System.out.println("não é um palidromo");
}

o que ele pede é o seguinte tirar a primeira letra e verificar se é palindrome se não for exclui a ultima e verifica de novo, imprime somente a palavra que é um palindrome.

No código que eu te postei é referente ao que foi exemplo na pergunta e você precisa verificar e aprender com o código. Nada diz na pergunta o que acabou agora dizendo

entendi

Essa pergunta tá muito estranha

o erro no codigo inicial esta naquele while que nao estou conseguindo fazer funcionar