Sobre Tokens

5 respostas
Grinvon

Fiz uma classe onde eu uso como parâmetro uma string qualquer
meu objeto é que seja mostrado todos os tokens dessa frase, sendo que eu delimitei por " ". Ou seja, uma frase como exemplo:

O rato roeu a roupa do rei de roma

Nessa frase existem 9 tokens, delimitados por " ".
Quero imprimilos cada token por linha. Até aí tudo bem, bem fácil, porém, para dificultar um pouco mais, quero colocar cada token em um array e depois imprimir as strings desse array por linha também.

eu fiz assim:

//classe tonkenizer
  Tokens(String menssagem)
  {
    //construtor RETÊM OS TOKENS EM UM ARRAY
    try {
   // for(int z=1;z>= tokens.length;z++)
 //   {
  //    tokens[z]="0";
  //  }
    StringTokenizer str = new StringTokenizer(menssagem," ");
    i = str.countTokens();

    while(str.hasMoreTokens()) {
      String temp = str.nextToken();
      tokens[pos] = temp.trim();
     // System.out.println(str.nextToken());
      pos +=pos;
    }

    //imprime o array como teste
    System.out.println("***
"+i);


    for(pos=0;pos==i;pos++)
    {
    //   if(tokens[pos] == null)
     //    break;
       System.out.println(pos+" "+tokens[pos]);
    }

    }catch(Exception e) { }
 }

}//fim da classe Tokens

Só que nesse caso ele não imprime o array.

array tokens[] de 999 partes

mensagem vai para tokens
tokens delimita a msg
temp pega um trecho usando trim
e joga para dentro do array

depois impressao do array até o numero i.
i é a quantidade de tokens.
:?

O que eu devo fazer para jogar corretamente os tokens no array e conseguir reter os valores desse array ou imprimilos?

Obrigado turma!

5 Respostas

Rafael_Steil

Seria algo como isso?

public class Teste 
{
	public static void main(String[] args)
	{
		String str = "O rato roeu a roupa do rei de roma";
		String[] tokens = str.split(" ");

		for (int i = 0; i < tokens.length; i++) {
			System.out.println(tokens[i]);
		}
	}
}

Rafael

Grinvon

Rafael obrigado por tentar ajudar! Não conhencia esse recursos chamado split. Porém ainda tenho dúvidas sobre StringTokenizer nesse aspecto lá em cima do meu código. Se por exemplo eu coloco uma frase como:

#tudo pode ser como você queira que seja

ele vai mostrar que há 8 tokens
porém ele vai imprimir assim

0 seja
1 null
2 null
3 null
4 null
5 null
6 null
7 null

so pega o último token =/

Rafael_Steil

Assim:

import java.util.StringTokenizer;

public class Teste
{ 
	public static void main(String[] args)
	{
		String mensagem = "O rato roeu a roupa do rei de roma";
		StringTokenizer str = new StringTokenizer(mensagem," "); 
		int totalTokens = str.countTokens();
		int counter = 0;

		String[] tokens = new String[totalTokens];

		while (str.hasMoreTokens()) {
			tokens[counter] = str.nextToken();

			counter++;
		}

		// Imprime o array como teste 
		System.out.println("*** "+ totalTokens); 

		for(int i = 0; i < tokens.length; i++) { 
			System.out.println(i +" "+ tokens[i]); 
		} 
	}
}

Rafael

Grinvon

Muito obrigado Rafael! =D

cv1

“Grinvon”:

for(pos=0;pos==i;pos++) { System.out.println(pos+" "+tokens[pos]); }

O Rafael ja resolveu, mas eu tou destacando esse trechinho de código só pra te mostrar a bobeira que vc fez aqui :wink:

Criado 14 de outubro de 2003
Ultima resposta 14 de out. de 2003
Respostas 5
Participantes 3