Uma outra idéia, se o seu professor não quiser que você use recursos prontos, ou se você quiser conhecer outras possibilidades…
Use uma estrutura de dados do tipo PILHA (LIFO - last in first out). Você pode usar algo pronto ou criar um objeto pilha que utiliza um vetor de cinco posições e tem os métodos push() (inserir) e pop() (remover).
Vá pegando cada caractere do String (do 1º ao último) e inserindo um por um na pilha.
int valorRecebido = 12345;
String numeros = String.valueOf(valorRecebido);
for(int i=0;i<numeros.length();i++){
pilha.push(numeros.charAt(i));
}
Depois crie uma segunda String (o ideal seria um StringBuffer, mas eu sugiro String pra usar o mínimo de recursos possível), vá desempilhando cada caractere e concatenando nessa nova String. Você obterá o “espelho” da String original. Na verdade é exatamente isso que o reverse() faz, internamente.
String numerosInverso;
while(!pilha.isEmpty()){
numerosInverso += pilha.pop();
}
Agora compare as duas Strings, se forem iguais é um palíndromo.
if(numeros.equals(numerosInverso)){
// é um palíndromo
}
Cabe a você criar essa classe Pilha, que pelo jeito vai receber caracteres (char). É um bom exercício para estudar conceito de estruturas de dados, e é simples de fazer. A dica é dentro da classe Pilha colocar uma variável int topo, que inicialmente vale -1 e indica onde está o topo da pilha conforme o número de caracteres que foi inserido. o método isEmpty() pode verificar se o topo vale -1. O método push(char a) pode colocar o caractere em vetor[++topo]; e o pop() pode remover o caractere do topo da pilha assim: vetor[topo–]. Eu não vou dar tudo mastigadinho, assim você estuda um pouco.
Divirta-se!
obs: se você resolver o problema e / ou alguém se interessar em como seria essa classe Pilha, eu faço o código para mostrar. Uma pilha criada assim funciona muito rápido.