Problemas com StringTokenizer!

2 respostas
C

Pessoal, tenho uma string com uma lista de 104 frases separadas por linha ("\n"), uso o strigtokenizer para separa-las e coloca-las uma a uma em outra string, porém ela só pega 84 tokens!!! Deveriam ser 104!! Pq?? Me ajudem! Quando imprimo a string dados saem as 104 frases , mas quando imprimo codigo só saem 84!!

public void gerarCromossomo(String c) { try{ dados = c; System.out.println(dados); StringTokenizer tokens = new StringTokenizer(dados, "\n"); for(int cont=0; cont<tokens.countTokens(); cont++){ String codigo= tokens.nextToken(); System.out.println(codigo); } } catch(Exception e){ e.printStackTrace(); System.exit(1); JOptionPane.showMessageDialog( null,"Erro na Função geraCromossomo - " + e.getMessage(), "Erro", JOptionPane.INFORMATION_MESSAGE ); } }

2 Respostas

dkotvan

Cara, o problema acontece porque você pos a chamado ao countTokens no for.
Imagine que fossem 5 tokens
No primeiro laço i = 0, i < 5
No segundo laço i = 1, i < 4
No tercerto laço i = 2, i < 3
O quarto laço fica i = 3, i < 2 e aí já não é mais executado.
Para resolver isso joga o valor do countTokens numa variável antes:

int countTokens = tokens.countTokens();
for (int cont = 0; cont < countTokens; cont++) {
	String codigo = tokens.nextToken();
	System.out.println(codigo);
}

Aí irá imprimir todas as linhas

Inté

S

Não use StringTokenizer, que é depreciado, use o método split() da classe String.

Mas, se quiser realmente continuar com StringTokenizer (pouco recomendado), use um while e os métodos hasMoreTokens() e nextToken(). Esse cont não tem utilidade alguma.
Outra coisa: nada executa depois de System.exit()

Criado 12 de novembro de 2007
Ultima resposta 12 de nov. de 2007
Respostas 2
Participantes 3