StringTokenizer

13 respostas
L

Ola Galera,
preciso de uma ajuda aki.
To precisando ler o seguinte dado de um arquivo:

ncols 254

Eu nao vou precisar do ncols,apenas do numero 254.
O espaco entre o ncols e o 254 é um Tab.
Ele esta acusando erro na 4 linha, e o erro é o seguinte:

O meu codigo esta da seguinte forma:

java.util.NoSuchElementException

at java.util.StringTokenizer.nextToken(StringTokenizer.java:259)

at array4.readMyFile(array4.java:60)

at array4.main(array4.java:18)

Exception in thread main

[ linie = datei.readLine();
StringTokenizer Tokens2 = new StringTokenizer(linie, “”);

linientokens = Tokens2.nextToken();
    linientokens = Tokens2.nextToken();
    n_cols = Integer.valueOf(linientokens).intValue();
    System.out.println (n_cols);]

Se puderem me ajudarfico grato.

Obrigado.

Tiago

13 Respostas

aborges
StringTokenizer Tokens2 = new StringTokenizer(linie, ""); !!!!

Leia a API direitinho mano …

StringTokenizer(String str, String delim)

delim - the delimiters.

Vc nao disse q queria um tab… Acho q o caracter do TAB eh ‘barra+t’ … C nao for, da uma pesquisada.

Alem disso, NAO ABRA OUTRO TOPICO PRA MESMA COISA !!!

http://www.guj.com.br/forum/viewtopic.php?p=60205

raguiar

Tente com o codigo abaixo.

import java.lang.*;
import java.util.*;

public class Teste {

  public static void main(String[] args) {
      String linie = "ncols        254";
      StringTokenizer Tokens2 = new StringTokenizer(linie);

      String linientokens = Tokens2.nextToken();
      linientokens = Tokens2.nextToken();
      int n_cols = Integer.valueOf(linientokens).intValue();
      System.out.println (n_cols);
  }
}
L

Ola,
eu ja troquei akela parte do delimeters para " ",mas ainda nao funciona…ocorre o mesmo erro…o que pode ser??
Obrigado
Tiago

L

O veio…
o seu jeito funcionou mas eu nao posso colocar o valor no programa,tipo igual vc fez colocando:
linie = “ncols 254”;

isso tem que ser buscado no arquivo,entendeu??
Pode me ajudar??
Obrigado
Tiago

raguiar

laine,

O codigo que coloquei foi so um exemplo (Nao tinha o arquivo para testar).
Vc deve adaptar o codigo inicial que vc mencionou (Acredito que se
vc mudar a linha abaixo, ira funcionar) :

StringTokenizer Tokens2 = new StringTokenizer(linie, "");

para :

StringTokenizer Tokens2 = new StringTokenizer(linie);
Rafael_Steil

Use o metodo split() da classe String… mto mais facil e rapido.

Rafael

aborges

Soh pra lembrar

"abcde".split(delimiter)
L

Ola galera,
no arquivo tenho a seguinte linha:
nocls 254
preciso pegar e imprmir apenas o numeral 254 e estou fazendo desse jeito mas esta dando errado…esta indo pra rotina de erro…catch.
O que esta errado,podem me ajudar?
Obrigado
Tiago

[FileReader infile = new FileReader(

G:/tiago/Java/JavaProjects/array4/classes/Nutz_Esri.hdr);

BufferedReader datei = new BufferedReader(infile);
linie = datei.readLine();
    StringTokenizer Tokens2 = new StringTokenizer(linie, "	");
    linientokens = Tokens2.nextToken();
    linientokens = Tokens2.nextToken();
    System.out.println(linientokens);
    n_cols = Integer.valueOf(linientokens).intValue();//tira
    System.out.println(n_cols);][/code]
aborges

1º Q erro está dando agora?
2º Pq vc nao tentou com o split q te falaram ?

raguiar

laine,

Segue abaixo o código para faler a leitura a partir de um arquivo ( O arquivo contem a linha ncols 254 - separado por tab):

import java.lang.*;
import java.util.*;
import java.io.*;

public class Teste {

  public static void main(String[] args) {
      try {
            FileReader infile = new FileReader("C:/teste.hdr");
            BufferedReader datei = new BufferedReader(infile);

            String linie = datei.readLine();
            StringTokenizer Tokens2 = new StringTokenizer(linie);
            String linientokens = Tokens2.nextToken();
            linientokens = Tokens2.nextToken();
            int n_cols = Integer.valueOf(linientokens).intValue();
            System.out.println(n_cols);
     }
     catch(Exception e) {
         System.out.println("Ocorreu um erro durante a leitura do arquivo" + " - " + e.getMessage());
     }
   }
}
L

Ola galera…
valeu pela ajuda…vo tentar e depois retorno um topic se deu certo …blz???
Valeu mesmo…
Obrigdo
Tiago

aborges

Vc quis dizer: … retorno NESTE topic se deu certo …blz???

L

Ai galera…
ow,o codigo funcionou…valeu mesmo.
Obrigado
Tiago

Criado 27 de abril de 2004
Ultima resposta 29 de abr. de 2004
Respostas 13
Participantes 4