Imprimir char ao inves d int em uma linkedlist!

4 respostas
Boster

Ae galera… td tranquilo?! to precisando de um HELP ae…
sou iniciante em java e to com um problema!

Tenho um codigo que estou implementando aqui que lê um determinado arquivo de entrada e tem que armazenar caracater por caracter em uma linkedlist, até ai tudu bem!
O problema é que quando eu preciso imprimir o conteudo dessa linked list, ela ta imprimindo os caracteres como se fossem do tipo int e não tipo char como eu preciso… alguem ae pode me ajudar?
o codigo ta ai em baixo…
Desde ja, muuuuuito grato!

public static void Ler(InputStream is) throws IOException {

BufferedReader bf = new BufferedReader(new InputStreamReader(is));

            int caracter = 0;
            LinkedList lista = new LinkedList();

	        System.out.println("\n..........agora vem o teste de leitura............\n");
           while ( (caracter = bf.read()) != -1) {
                    lista.add(caracter);
                    System.out.print((char)caracter+"  ");
			}
	        System.out.println("\n..........agora vem a LINKED LIST............\n");

			Iterator i = lista.iterator(); 
				while (i.hasNext()) { 
				 System.out.println(i.next()+" ");       //eh aqui que ta o problema.. =(
			}

}

4 Respostas

ViniGodoy

Oi bem-vindo ao GUJ!

1. Quando for postar código, use a tag code.
2. O método read retorna um int, não um char.
3. Se você usa Java 5 ou superior, é melhor qualificar o tipo da lista com os generics. Assim você consegue dizer ao java que sua lista é de character, não de integer.
4. Use sua lista através da interface List, não pelo tipo LinkedList.
5. Faça um cast para poder imprimir do jeito que você quer. Exemplo:

public static void Ler(InputStream is) throws IOException { 
   BufferedReader bf = new BufferedReader(new InputStreamReader(is)); 
   int caracter = 0; 
   List<Character> lista = new LinkedList<Character>(); 

   System.out.println("\n..........agora vem o teste de leitura............\n"); 
   while ( (caracter = bf.read()) != -1) { 
      lista.add((char)caracter); 
      System.out.print((char)caracter+" "); 
   } 
   System.out.println("\n..........agora vem a LINKED LIST............\n"); 

    Iterator<Character> i = lista.iterator(); 
    while (i.hasNext()) { 
        System.out.println(i.next()+" "); //eh aqui que ta o problema.. =( 
    } 
}
ViniGodoy

Outra dica, você poderia substitui o while do final e o iterator por um for each. O código fica mais claro:

for (Character char : lista) { //Para cada caracter na lista System.out.println(char +" "); //Imprime o caracter. }

Boster

Hey ViniGodoy
foi mal… ainda nao pelo nao uso de tags… primeiro post… sabecomo eh neh?! =P
da proxima prometo alguma melhorar… =D
vou testar sua sugestao mais tarde…
mas desde ja agradeço a ajuda…
abração teh mais

ViniGodoy

Normalmente é uma boa ler as regras do fórum, antes de começar a postar. Mas tudo bem, é um erro muito comum.
Para conhecer esse e outros recursos do fórum, por favor leia esse link: http://www.guj.com.br/posts/list/50115.java

Criado 20 de novembro de 2007
Ultima resposta 20 de nov. de 2007
Respostas 4
Participantes 2