Afinal, é fluxo de byte ou caracter?

1 resposta
A

Salve,

Aprendendo a usar fluxos, fiz um programinha teste que lesse dois números e imprimisse a soma. Para ler os números do teclado usei

DataInputStream dis = new DataInputStream (System.in);

e depois

a = dis.readInt();

O resultado foi completamente errado, um número absurdamente grande. A solução foi usar

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

e depois

a = Integer.parseInt(bf.readLine());

Tentei entrar com os dados a partir de um arquivo e o resultado foi semelhante. Se a classe DataInputStream tem os métodos específicos para a leitura de números porque não deu certo? Afinal, como saber se o fluxo que queremos abrir é de bytes ou de caracteres?

Grato,
Arnaldo.

1 Resposta

C

Arnaldo, dê uma olhada no javadoc da classe DataInputStream: com certeza vc vai entender a explicação do pq disso lá, mas eu já adianto aqui:

Quando vc chama readInt() em um DataInputStream que recebe System.in, vc está lendo um inteiro do console, de fato… o problema é o DataInputStream espera um stream binário, e não texto. Ou seja, ele leu o código Unicode do caractere que vc digitou, e não o número que foi digitado :wink:

Criado 30 de setembro de 2003
Ultima resposta 30 de set. de 2003
Respostas 1
Participantes 2