StreamTokenizer - Diferenciar palavras de numeros

2 respostas
masterpablo

Olá Amigos,
estou com um problema que nao sei como resolver.

Preciso fazer um trabalho em java em que tenho que ler um arquivo e ir obedecendo os comandos do mesmo. No arquivo tem comandos para criar variáveis e tudo mais. Tem também comandos para somar, subtrair e por aí vai.

Uma das minhas dúvidas é:

Como usar um método que sabe diferenciar palavras de numeros?

Eu preciso de um metodo que leia alguma coisa e me diga se é palavra ou numero, pois se for palavra eu empilho em uma pilha e se for numero eu farei em outra. Já estou usando o metodo TT_WORD e TT_NUMBER mas nao estou conseguindo faze-lo funcionar. No meu codigo, eu pedi para que se for palavra ele me informe e que faça o mesmo para numero, mas o problema é que ele entende tudo como palavra.

Será que voces podem me ajudar?

Posto meu código logo abaixo:

File file = new File("teste1.txt");
		
		try {
			//inicializa o StreamTokenizer
			FileReader reader = new FileReader(file);
			BufferedReader bReader = new BufferedReader(reader);
			StreamTokenizer st = new StreamTokenizer(bReader);	

			//configura o StreamTokenizer
			st.resetSyntax();
			st.whitespaceChars(0,' ');
			st.wordChars(' '+1,255);
			
			
			//manda o StreamTokenizer ler a primeira palavra do arquivo
			// manda o StreamTokenizer ler a primeira palavra do arquivo
			int aux=st.nextToken();
						
			//pega a linha atual do arquivo
			st.lineno();
			
			while(st.ttype!=StreamTokenizer.TT_EOF)
			{
				switch (st.nextToken())
				{
					case StreamTokenizer.TT_WORD:
						System.out.println("E palavra");
						break;
					
					case StreamTokenizer.TT_NUMBER:
						System.out.println("E numero");
						break;
				}		
			}
.
.
.
.
.

Já tentei colocar numero para ver o que acontece mas ele classifica tudo como palavra mesmo.

Aguardo retorno!

Muito obrigado

2 Respostas

L

Pega a palavra lida e tenta transformar em número…assim…

//... adiciona o stream lido na string palavra
boolean isNumero = false;
int num = -1;
try{
 num = Integer.parseInt(palavra); //Ou Double.parseDouble, conforme sua necessidade
 System.out.println("é número");
 isNumero = true;
}catch(NumberFormatException nfe){
 System.out.println("é palavra");
 isNumero = false;
}

...
masterpablo

Om Leopoldof,
mas as vezes eu vou precisar da palavra, nao fica legal tentar converter sempre as palavras em numeros.

entende?

Criado 28 de agosto de 2008
Ultima resposta 28 de ago. de 2008
Respostas 2
Participantes 2