Ler uma String usando o metodo StringTookenizer

10 respostas
D

estou com um pouco de problemas para usar esse metodo, preciso ler uma linha que esta no arquivo txt, onde no formulario eu digito o codigo e o metodo le o arquivo acha aquele codigo e retorna a string inteiro,
esse é meu codigo se alguem puder ajudar agradeço

public void Ler(int number)
    {
    File file = new File("D:/cadastro.txt");
    FileReader ler=null;
    BufferedReader leitor=null;
        try {
            ler = new FileReader(file);
            leitor = new BufferedReader(ler);
            String linha = "";
            while((linha = leitor.readLine()) != null)
            {
            StringTokenizer st = new StringTokenizer(linha, ";");
            String dados = null;
            while (st.hasMoreTokens())
             {
           if(number == st.nextToken(dados))
           {
            dados = st.nextToken();
            JOptionPane.showMessageDialog(rootPane,dados);

            }
            }
            }
             
            leitor.close();
            ler.close();


        } catch (IOException e) {
            JOptionPane.showMessageDialog(rootPane, "Erro ao ler arquivo");
        }




    }

o parametro number é o codigo do formulario

10 Respostas

A

qual erro está acontendo?

PS: vc pode usar split, é mais simples.

t+

nel

alissonvla:
qual erro está acontendo?

PS: vc pode usar split, é mais simples.

t+

Não só é mais simples mas como a própria Oracle recomenda :slight_smile:

E
if(number == st.nextToken(dados))

Seu código nem compila, porque nextToken volta uma String. ( http://download.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html#nextToken(java.lang.String) ), e está tentando comparar uma coisa com a outra sem converter. (Java não sabe converter as coisas sozinho, não é JavaScript.)

Você pelo menos sabe o que precisa fazer?

D

eu preciso digitar um codigo no formulario e vasculhar o arquivo de texto de mostrar a linha de dados daquele codigo
exemplo digita 1 no campo codigo e clica em ler

vai la no arquivo cadastro.txt e localiza o token que comtem o codigo igual a 1 e apresenta todas as informações daquela linha como nome, logradouro e etc,
o codigo não compila mesmo porem eu não arrumar

grato

nel
derb:
eu preciso digitar um codigo no formulario e vasculhar o arquivo de texto de mostrar a linha de dados daquele codigo exemplo digita 1 no campo codigo e clica em ler

vai la no arquivo cadastro.txt e localiza o token que comtem o codigo igual a 1 e apresenta todas as informações daquela linha como nome, logradouro e etc,
o codigo não compila mesmo porem eu não arrumar

grato

Amigão, vou fazer uma pequena alteração usando o Split.
Após isto, poste o erro para analisarmos.

public void Ler(int number)   
{   
File file = new File("D:/cadastro.txt");   
FileReader ler=null;   
BufferedReader leitor=null;   
    try {   
        ler = new FileReader(file);   
        leitor = new BufferedReader(ler);   
        String linha = "";   
        String num = String.valueOf(number);
        while((linha = leitor.readLine()) != null)   {   
           String[] values = linha.split(";");
           for(String item : values) {   
                if(num.equals(item))  {   
                   JOptionPane.showMessageDialog(rootPane, item);    
                 }   
            }   
        }              
        leitor.close();   
        ler.close();     
  
    } catch (IOException e) {   
        JOptionPane.showMessageDialog(rootPane, "Erro ao ler arquivo");   
    }   
  
}

Faça um teste e veja se há erros e quais.

D

nel agradeço muito mas não testei ainda seu codigo.
o professor pediu que a gente desenvolvesse com a String de Tokenizer o codigo e o comando split não foi ensinado em aula ainda.

agradeço mas gostaria de fazer esse metodo usando só String de Tokenizer

nel

derb:
nel agradeço muito mas não testei ainda seu codigo.
o professor pediu que a gente desenvolvesse com a String de Tokenizer o codigo e o comando split não foi ensinado em aula ainda.

agradeço mas gostaria de fazer esse metodo usando só String de Tokenizer

Só um professor poderia dizer aqui (ou qualquer outro) mas não entendo porque exigir algo da linguagem de programação que está “ultrapassado” se a própria desenvolvedora da linguagem recomenda a utilização de outro recurso, mas enfim, segue o mesmo código com StringTokenizer.

public void Ler(int number) { File file = new File("D:/cadastro.txt"); FileReader ler=null; BufferedReader leitor=null; try { ler = new FileReader(file); leitor = new BufferedReader(ler); String linha = ""; while((linha = leitor.readLine()) != null) { StringTokenizer st = new StringTokenizer(linha, ";"); String dados = null; while (st.hasMoreTokens()) { dados = st.nextToken(dados); if(String.valueOf(number).equals(dados)) { JOptionPane.showMessageDialog(rootPane,dados); } } } leitor.close(); ler.close(); } catch (IOException e) { JOptionPane.showMessageDialog(rootPane, "Erro ao ler arquivo"); } }

Perceba que a alteração foi “suave” mas essencial. Você realiza um st.nextToken() no if e outro para pegar o dado e isso fazia com que você “pulasse” uma informação e com certeza iria gerar uma exceção pois não estaria em sincronia com o seu laço. Veja se isso resolve o seu problema, caso o erro citado por você fosse algo desse tipo, é claro.

4

Derb ficou resolvido?
senão aprenda neste video tudinho.

D

funcionou certinho
obrigado a todos

WellingtonRamos

derb:
nel agradeço muito mas não testei ainda seu codigo.
o professor pediu que a gente desenvolvesse com a String de Tokenizer o codigo e o comando split não foi ensinado em aula ainda.

agradeço mas gostaria de fazer esse metodo usando só String de Tokenizer

Se o professor está ensinando StringTokenizer, é bem provável que nem saiba que existe o método split…

Se tua escola “vende” que está alinhada às tecnologias atuais e práticas de mercado modernas, pode processá-la por propaganda enganosa :twisted:

Veja na própria API: http://download.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html

Criado 28 de setembro de 2011
Ultima resposta 29 de set. de 2011
Respostas 10
Participantes 6