Palindroma

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

Palindroma

Mensagempor held2 » Sexta Abr 10, 2009 17:26

Olá pessoal,

Estou a tentar fazer um programa que lê um ficheiro de texto e que detecte palindromas contidos nesse ficheiro. Mas estou com alguma dificuldade. Como disse quero que verifique se cada palavra do ficheiro é palindroma...e que apresente no ecrã as que o são.
Envio-vos aqui o meu código, só que ainda nao consegui fazer o que quero... Espero que me possam ajudar.

Obrigada desde já pelas vossas respostas.

Código: Seleccionar todos
public static boolean palindroma(String s)
   {
      int l=s.length();
      
      if (l<2)
         return true;
      else
         if (!s.substring(0,1).equals(s.substring(l-1,l)))
            return false;
         else
            return palindroma(s.substring(1,l-1));      
         
      
   }
public static void main(String[] args) throws IOException
    {
try{
      File ficheiro = new File ("Fich.txt");
      FileReader lerFicheiro = new FileReader(ficheiro);
      BufferedReader buff = new BufferedReader (lerFicheiro);
      String linha;
      String chaine= "";
      
      linha = buff.readLine();
      
      
      while ((linha=buff.readLine())!=null)
      {
         System.out.println(linha);
         chaine+=linha+"\n";
         if (palindroma(chaine))
         {
            System.out.println("palavra: " +chaine);
         }
      }
      buff.close();
   }   
   catch (Exception e)
   {
         System.out.println(e.toString());
   }

    }
held2
Novato
Novato
 
Mensagens: 1
Registado: Sexta Abr 10, 2009 17:16

Mensagempor vamosAeles » Sexta Abr 10, 2009 18:42

Boas,

1) Não especificas-te, mas como tens o readLine(), deve ser uma palavra por linha.

2) Olhando para o código o prob parece ser quando fazes chaine+=linha+"\n" no main.

o readLine() não deixa o \r ou \n no fim da string e tu estás ai a colocar esse caracter. Logo quando chamas boolean palindroma(String s), isso nunca dever dar true, pois o primeiro caracter da string não deverá ser igual ao último, que é sempre o \n.
Assim como em cada ciclo a string q passas para a verificação se é palindroma, não é a palavra dessa linha, mas todas as palavras que leste do file até ao momento.
Como descreves-te o problema penso que não seja isso que queres

Experimenta simplesmente a eliminar essa instrução acima, e nas outras que vem depois a substituir chain por linha

[[]]
vamosAeles
Membro de Prata
Membro de Prata
 
Mensagens: 206
Registado: Quarta Jan 04, 2006 21:29
Localização: Lisboa/Proença


Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron