StringTokenizer

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 ajudar…fico grato.
Obrigado.
Tiago[/code]

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

Tente com o codigo abaixo.

[code]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);

}
}[/code]

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

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

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); 

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

Rafael

Soh pra lembrar

"abcde".split(delimiter)

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]

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

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):

[code]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());
 }

}
}[/code]

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

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

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