Dúvida em um exercício

Escreva uma classe, chamada PalavraPalíndromo. A classe deve ter um
atributo do tipo array de caracteres (char); o construtor da classe; um método
que descubra se a palavra contida no array é um palíndromo; e um método
para mostrar a palavra na tela. Palíndromos são aquelas palavras que têm a
mesma escrita em ambos sentidos. Exemplos: veja como as palavras a seguir
podem ser lidas tanto da esquerda para a direita como da direita para a
esquerda.
?OVO?
?REVIVER?
?SOCORRAM-ME SUBI NO ONIBUS EM MARROCOS? (desconsiderar o hífen
neste exemplo)

alguem poderia me ajudar?

Opa qual é a sua dúvida?! Tem alguma coisa feita?!

A dica é: crie dois métodos: um para tirar os espaços e hifens, e outro método para inverter as letras da palavra.
Tire os espaços e hifens da frase ou palavra.
A seguir, compare a frase ou palavra invertida com o original (devidamente removidos os espaços e hifens).
Se o resultado for igual, a palavra ou frase é um palíndromo.

public class PalavraPAlindromo
{
    private char palavra[];

    public PalavraPAlindromo(char[] palavra)
    {
        this.palavra = palavra;
    }

    public char[] getPalavra()
    {
        return palavra;
    }

    public void setPalavra(char[] palavra)
    {
        this.palavra = palavra;
    }
    
    
    
    
}

a parte que eu ja fiz
como faço esses metodos me ajuda

aproveitando o topico e a duvida dele
como eu faço para no caso de digitar uma frase,eu colocar cada palavra em uma posição do array?

por exemplo eu digito: eu estou no guj
ele coloca isso em 4 posições do array.
como faz?

        String[] a = "eu estou no guj".split(" ");
        for (String b : a ) {
            System.out.println(b);
        }

eu to atoa aqui no serviço e resolvi fazer o seu exercício

[code]import javax.swing.JOptionPane;

public class PalavraPalindromo {

private char[] palavra;

public boolean verificaPalindromo(char[] palavra){
    this.palavra = new char[palavra.length];
    int x = 0;
    
    // preenche o vetor this.palavra ao contrario do parâmetro de entrada
    for(int i=palavra.length-1;i>=0;i--){
        this.palavra[x] = palavra[i];
        x++;

    }
    
    // verifica posição por posição
    for(int i=0;i<palavra.length;i++){
        
        if(this.palavra[i] != palavra[i]){
            return false;
        }
        
    }
    // se não for diferente retorna true
    return true;
    
}

public static void main(String[] args) {
    String strPalavra;
    strPalavra = JOptionPane.showInputDialog("Digite uma Frase");

    // cria um vetor de char do tamanho da string digitada pelo usuário e o preenche
    char[] character = new char[strPalavra.length()];
    for(int i = 0; i<character.length;i++){

        character[i] = strPalavra.charAt(i);
    }

    // cria um objeto da classe PalavraPalindromo e chama o método verificaPalindromo passando o vetor
    PalavraPalindromo pl = new PalavraPalindromo();
    if(pl.verificaPalindromo(character)){
        JOptionPane.showMessageDialog(null, "É Palíndromo");
    } else{
        JOptionPane.showMessageDialog(null, "Não é Palíndromo");
    }

}

}
[/code]

O método verificaPalindromo recebe um vetor de char ao invez de String por causa do seu enunciado.

obrigado
muito obrigado mesmo, com base neste estou fazendo o meu, pois sou contra copias mas agradeço de novo cara,ah
vou postar aqui a solucao para outras pessoas que tiverem a mesma duvida
terem a sua pergunta respondida
grato pela sua colaboraçao

SOLUCAO DO EXERCICIO

import javax.swing.JOptionPane; 

public class PalavraPAlindromo
{
    private char palavra[];

    public PalavraPAlindromo()
    {
        this(null);
    }
    public PalavraPAlindromo(char[] palavra)
    {
        this.palavra = palavra;
    }

    public char[] getPalavra()
    {
        return palavra;
    }

    public void setPalavra(char[] palavra)
    {
        this.palavra = palavra;
    }
  /** METODO PARA VERIFICAR SE É PALINDROMO*/
    public boolean verificaPalindromo(char[] palavra)
    {  
        this.palavra = new char[palavra.length];  
            int x = 0;  
         
  /**PREENCHE O VETOR PALAVRA AO CONTRARIO DO PARAMETRO DE ENTRADA*/  
         for(int i=palavra.length-1;i>=0;i--)
         {  
              this.palavra[x] = palavra[i];  
               x++; 
          }  
           
  /** VERIFICA POSICOES*/  
        for(int i=0;i<palavra.length;i++)
        {  
               
          if(this.palavra[i] != palavra[i])
          {  
                return false;  
          }  
               
        }  
  /** TRUE = SE NAO FOR DIFERENTE*/  
         return true;  
           
    }  
  
  /** INICIO DO MAIN*/
  public static void main(String[] args) {  
      String strPalavra;
      strPalavra = JOptionPane.showInputDialog("DIGITE UMA PALAVRA");  
   
    /**CRIA UM VETOR DE CHAR DO TAMANHO DA STRING DIGITADA*/  
         char[] character = new char[strPalavra.length()];  
         for(int i = 0; i<character.length;i++)
         {  
             character[i] = strPalavra.charAt(i);  
         }  
   
    /**CRIA UM OBJETO DA CLASSE E CHAMA O METODO VERIFICA PALINDROMO*/  
         
         PalavraPAlindromo pp = new PalavraPAlindromo();  
         
         if(pp.verificaPalindromo(character))
         {  
             JOptionPane.showMessageDialog(null, "É PALINDROMO");  
         } 
         
         else
         {  
             JOptionPane.showMessageDialog(null, "NAO E PALINDROMO");  
         }  
   
     }  
   
 }  
 
 // GRATO AO FORUM GUJ PELA AJUDA NA SOLUÇAO DO EXERCICIO//

Tenho um crítica a solução do seu exercício,

pois a única coisa q vc mudou do meu código pro seu foi a adição disto:

[code]
public PalavraPAlindromo()
{
this(null);
}
public PalavraPAlindromo(char[] palavra)
{
this.palavra = palavra;
}

 public char[] getPalavra()  
 {  
     return palavra;  
 }  

 public void setPalavra(char[] palavra)  
 {  
     this.palavra = palavra;  
 }  [/code]

destes 2 contrutores e 2 métodos, e ambos são desnecessários pois eles nunca faram nada,
pois o método verificaPalindromo exige um vetor de char, e com isso o setPalavra e o construtor com um vetor são desnecessários. O getPalavra e o construtor vazio nem se fala.

sei la to acostumado a colocar get,set em tudo que faço , pois uso private nos atributos

Pois não use setters ou getters se você não vai precisar.

desta forma é bem mais simples:

[code]public static void main(String[] args) {
StringBuffer stringbuffer = new StringBuffer();
String string = JOptionPane.showInputDialog(“digite algo”);
string = string.replace("-", “”).replace(" ", “”);
stringbuffer.append(string);
System.out.println((string.equals(stringbuffer.reverse().toString())?“palíndromo”:“não é palindromo”));

}[/code]

Oi. Quando for postar tópicos, por favor, não utilize letras maiúsculas no título. Procure também dar um título que descreva natureza do problema. Fica mais fácil “Como testo se é um palíndromo?” do que “Dúvida em exercício”.

Também tente usar a busca do fórum, a resposta desse exercício já foi dada diversas vezes, aqui mesmo no GUJ.

No caso do palíndromo, especificamente, você não precisa percorrer a palavra toda, como todos fizeram. Mas só meia palavra. Aqui está uma solução mais otimizada para o problema:
http://www.guj.com.br/posts/list/96672.java#519330

[quote=Marlon Meneses]desta forma é bem mais simples:

[code]public static void main(String[] args) {
StringBuffer stringbuffer = new StringBuffer();
String string = JOptionPane.showInputDialog(“digite algo”);
string = string.replace("-", “”).replace(" ", “”);
stringbuffer.append(string);
System.out.println((string.equals(stringbuffer.reverse().toString())?“palíndromo”:“não é palindromo”));

}[/code][/quote]

Marlon Meneses, muito legal esse método reverse do StringBuffer, mas só me responde uma coisa, pq o StringBuffer e n o StringBuilder, me parece q o StringBuffer é mais indicado pra qdo utiliza-se threads, ou to enganado?

eu n usei strings pois o enunciado diz q tinha q ser vetor de char, mas a sua solução é mto boa, e eu n iria chegar a ela pois eu n conhecia este método reverse.

Seria realmente melhor fazer com StringBuilder.

O StringBuffer tem todos os métodos sincronizados. Pelo tipo de uso que se faz dessas classes, mesmo no caso de aplicações multi-threading, dificilmente o StringBuffer será recomendado. Isso pq, serão raras as vezes que o buffer está fora de um método synchronized, que já garantirá por si só um uso individual da classe.

O StringBuffer só deve ser usado se várias threads irão escrever no buffer ao mesmo tempo. Uma situação que acho difícil de imaginar na prática.

ViniGodoy, valeu pela resposta, agora eu saquei a diferença.