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
por 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

-
- Mensagens: 1
- Registado: Sexta Abr 10, 2009 17:16
por 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

-
- 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