Ola Joao,

Jo�o Medeiros wrote:
> 
> Bruno, obrigado pelo sua resposta. � um bocado de c�digo para ler as 
linhas de um arquivo texto
> mas, tudo bem, funcionou quando compilei com o jdk1.2 do windows.
> 

Nao, nao eh um bocado de codigo. Se voce reparar, eu te enviei um
programa completo, que faz inclusive tratamento de errors. Eu ia chamar
atencao sobre isso, mas esqueci. Faca um programa que faz as mesmas
checagens em C e voce vera que eu tenho razao. Geralmente as pessoas
fazem em C um programa que nao verifica nada mas funciona se nao
acontecer nada de errado, e depois, quando entra em producao, eh um
programa que muitas vezes nao funciona, ou pior, tem comportamento
inesperado. Isso nao eh possivel com Java, e essa eh uma das melhores 
vantagens do Java. Te obriga a fazer programas mais robustos.

> Desculpem se insisto em usar o java juntamente com o linux,

Desculpe, porque? Eh a sua melhor opcao! Ainda nao esta completa, mas
na minha discussao sobre desenvolvimento 
        http://www.javaman.com.br/projetos/tide.html
voce eventualmente vai descobrir que a unica forma de desenvolver 
descentemente em windows eh instalar suporte a um shell Unix! Portanto, 
continue no linux, que voce esta bem!

> por�m quando tentei usar o java no linux que veio na revista PC 
Master (jdk1.1.7) obtive a
> seguinte mensagem (devo acrescentar que ele est� compilando normalmente 
v�rios outros programas,
> de forma que, aparentemente, est� instalado corretamente) :
> 
> filetest.java:30: Method parseFloat(java.lang.String) not found in 
class java.lang.Float.
>                     f = Float.parseFloat(st.nextToken());
>                                         ^
> 1 error
> 
> Pelo visto n�o existe esse m�todo nessa vers�o, 

Correto. O Float.parseFloat() eh um metodo do 1.2, que nao existe no
1.1.x (no seu caso, eh o 1.1.7). O correto no 1.1.x eh utilizar o metodo 
valueOf (ver abaixo)

>dei uma olhada na documenta��o que veio com ele
> e o mais perto que encontrei foi valueOf(String), mas tamb�m n�o deu 
certo. Substitui o
> parseFloat por valueOf e obtive a mensagem de erro:
> 
> filetest.java:31: Incompatible type for =. Can't convert java.lang.Float 
to float.
>                     f = Float.valueOf(st.nextToken());

valueOf devolve um Float e nao um float. Voce deve utilizar a linha:

        f = Float.valueOf(st.nextToken()).floatValue();

Isso te devolvera um float.

> Se voc� ou algu�m tiver mais alguma sugest�o, agrade�o. Se n�o vou 
continuar no windows mesmo.
>
> at�,
> Jo�o Medeiros
> 
> "Bruno Souza (Sun Microsystems)" wrote:
> 
> > Pessoal,
> >
> > Desculpem, mas essa minha reposta esta errada. Na verdade, voce pode
> > utilizar os metodos listados, mas apenas em streams (ou arquivos)
> > gravados da mesma forma (com as classes DataOutputStream ou RandomAccessFile).
> > Essas classes gravam e leem um formato binario, e nao texto.
> >
> > Estou anexando um programa que le o arquivo do tipo indicado, e
> > imprime os resultados lidos na tela. Nesse exemplo eu estou utilizando
> > java.util.StringTokenizer, mas seria possivel utilizar um
> > StreamTokenizer com basicamente os mesmos resultados.
> >
> > Observe que o problema dessa leitura eh obviamente a conversao de
> > String para int e/ou float, que em Java eh importante capturar os
> > eventuais erros ocorridos.
> >
> > Desculpem a confusao....
> >
> > import java.io.*;
> > import java.util.*;
> >
> > public class filetest {
> >
> >     public static void main(String args[]) {
> >
> >         BufferedReader b=null;
> >
> >         try {
> >             b = new BufferedReader(new FileReader("teste.txt"));
> >         } catch (IOException ioe) {
> >             System.out.println("Nao foi possivel ler o arquivo.");
> >             System.exit(1);
> >         }
> >
> >         try {
> >             String d=null;
> >             int i=0;
> >             float f=0;
> >
> >             String line;
> >             while ((line = b.readLine()) != null) {
> >
> >                 StringTokenizer st = new StringTokenizer(line);
> >
> >                 try {
> >                     d = st.nextToken();
> >                     f = Float.parseFloat(st.nextToken());
> >                     i = Integer.parseInt(st.nextToken());
> >                     System.out.println("Data:"+d+" i:"+i+" f:"+f);
> >                 } catch (NumberFormatException nfe) {
> >                     System.out.println("Numero invalido.");
> >                 }
> >
> >             }
> >         } catch (IOException ioe2) {
> >             System.out.println("Erro na leitura do arquivo.");
> >         }
> >     }
> > }
> >
> > Arquivo teste.txt
> >
> > 01/11/1999      12.34      123
> > 2/2/2000      7788.4     123456
> >
> > "Bruno Souza (Sun Microsystems)" wrote:
> > >
> > > Sim, voce pode utilizar tanto a classe RandomAccessFile ou a classe
> > > DataInputStream. Ambas possuem metodos readUTF, readFloat e readInt
> > > que farao o que voce deseja.
> > >
> > >         FileInputStream f = new FileInputStream("nomedoarquivo");
> > >         DataInputStream dis = new DataInputStream(f);
> > >
> > >         String d = dis.readUTF();
> > >         float f = dis.readFloat();
> > >         int i = dis.readInt();
> > >
> > > []s,
> > >
> > > Bruno.
> > >
> > > Jo�o Medeiros wrote:
> > > >
> > > > ol� pessoal,
> > > > estou escrevendo um programa em java e ele precisa ler dados que est�o
> > > > gravados em arquivos textos da seguinte forma
> > > >
> > > > Data              valor float   valor int
> > > > 01/11/1999     12.00         1234
> > > >
> > > > Em c eu escreveria apenas uma linha de c�digo para ler a segunda linha
> > > > acima:
> > > >
> > > > scanf("%s %f %d\n",data, &valor1, &valor2);
> > > >
> > > > onde as vari�veis data, valor1 e valor2 est�o definidas como:
> > > >
> > > > char data[11];
> > > > float valor1;
> > > > int valor 2;
> > > >
> > > > existe alguma coisa equivalente em java?
> > > >
> > > > grato por qualquer ajuda.
> > > >
> > > > Jo�o Medeiros
> > > >
> > > > * Para n�o receber mais e-mails desta lista envie um e-mail para 
>[[EMAIL PROTECTED]]
> > > > e no corpo do email escreva [unsubscribe <seu-email>]
> > > > Veja as mensagens antigas em http://www.mail-archive.com/javabr%40cits.br/
> > >
> > > --
> > >
> > > Bruno.
> > > ______________________________________________________________________
> > > Bruno Peres Ferreira de Souza                         Sun Microsystems
> > > System Engineer - Java Technologist         [EMAIL PROTECTED]
> > >         if I fail, if I succeed, at least I live as I believe
> > > * Para n�o receber mais e-mails desta lista envie um e-mail para 
>[[EMAIL PROTECTED]]
> > > e no corpo do email escreva [unsubscribe <seu-email>]
> > > Veja as mensagens antigas em http://www.mail-archive.com/javabr%40cits.br/
> >
> > --
> >
> > Bruno.
> > ______________________________________________________________________
> > Bruno Peres Ferreira de Souza                         Sun Microsystems
> > System Engineer - Java Technologist         [EMAIL PROTECTED]
> >         if I fail, if I succeed, at least I live as I believe
> 
> * Para n�o receber mais e-mails desta lista envie um e-mail para 
>[[EMAIL PROTECTED]]
> e no corpo do email escreva [unsubscribe <seu-email>]
> Veja as mensagens antigas em http://www.mail-archive.com/javabr%40cits.br/

-- 


Bruno.
______________________________________________________________________
Bruno Peres Ferreira de Souza                         Sun Microsystems
System Engineer - Java Technologist         [EMAIL PROTECTED]
        if I fail, if I succeed, at least I live as I believe
* Para n�o receber mais e-mails desta lista envie um e-mail para 
[[EMAIL PROTECTED]]
e no corpo do email escreva [unsubscribe <seu-email>]
Veja as mensagens antigas em http://www.mail-archive.com/javabr%40cits.br/

Responder a