Meu programa le um arquivo txt, e grava em uma lista todas as palavras separadas, e grava a frequencia com que elas ocorrem. O problema é que quando o arquivo tem alguma palavra com acentuação, qualquer que seja, o programa não le nada do texto, não importa se seja apenas uma palavra no final do texto, ou varias palavras em varias partes do texto, ele não le nada.
aqui a parte do meu codigo que le o arquivo
input = new Scanner(file);
while(input.hasNext()){
palavra = input.next();
list.insert(palavra);
}
O estranho, é que em textos sem acentuação o programa funciona perfeitamente.
Oi Maurício,
Acredito que seu problema esteja relacionado a forma que você está usando o Scanner.
Quando vc pergunta “has next?” e pega o “next”, vc está pegando um token do Scanner baseado no delimitador padrão do Scanner, que por sua vez, deve estar atrapalhando o recorte.
Tente pegar linha a linha, e então recortar cada linha nos espaços.
Algo assim:
[code]input = new Scanner(file);
// tem mais linhas?
while(input.hasNextLine()){
// sim, tem mais linhas...
// pega a linha, recorta nos espaços (\s), gerando um array (segundo argumento do for each)
// e itera por esse array, colocando cada token na String palavra
for ( String palavra : input.nextLine().split( "\s" ) ) {
list.insert(palavra);
}
} [/code]
Você já tentou passar o charset do arquivo de texto que contém a acentuação como parâmetro para o Scanner?
Scanner input = new Scanner(new FileInputStream("teste.txt"), "latin1");
1 curtida
[quote]
Você já tentou passar o charset do arquivo de texto que contém a acentuação como parâmetro para o Scanner?
view plaincopy to clipboardprint?
Scanner input = new Scanner(new FileInputStream(“teste.txt”), “latin1”); [/quote]
nao tinha tentado nao, mas funcionou
valeu cara, problema resolvido.