Strings.......ninguém consegue resolver esse problema?

5 respostas
D

Bem estou querendo fazer o seguinte: Ao Digitar uma String tipo: (124)+3(3+488)…gostaria que um método retornasse os caracteres individuais na ordem em q aparecem na String, como por exemplo…"(" “12” “" “4” “)” “+” “3” "” “(” “3” “+” “488”
…entenderam ?
Tudo separado…os parenteses, os operadores e os numeros…como faço isso?..será q vcs tem como postar um algoritmo para q eu possa resolver esse problema ?

Fiz com a class new StringTokenizer("*/±()")…mas desse jeito so me retorna os numeros…mas eu preciso tbm dos operadores e dos parenteses…na mesma ordem q aparecem na String…e agora ?

5 Respostas

quikkoo

ou vc faz um parser, q seria o modo mais eficiente, ou faz uma gambiarra bunitinha, feito essa:

Vector<String> vtr = new Vector<String>();

for (int i = 0, int len = str.length(); i < len; i++)
{
	String aux = str.substring(i, i + 1);
	switch (c)
	{
		case '+':
		case '-':
		case '*':
		case '/':
		case '(':
		case ')':
			vtr.add(aux);
			break;
		default:
			vtr.add(vtr.lastElement() + aux);
			break;
	}
}

bom, nem sei se funciona d verdade, mas tenta ae né

flw, t+

Aurione

Aew daniloah blz?

Tenta fazer dessa maneira ai pra ver se da certo ou pra ver se é isso que você quer!

public static void main(String[] args) {
String valor = new String("(124)+3(3+488)");

for ( int x = 0; x < valor.length(); x++ ){
     System.out.print(" \""+valor.substring(x, x+1)+"\"");
 }

}

Abraço! Espero ter ajudado!

urubatan

http://www.singularsys.com/jep/

ksi

Pega essa String e faz isso:

String s = "(2+2+5)";
char [] c =  s.toCharArray();

ou seja,

c[0] = ‘(’
c[1] = ‘2’
c[2] = ‘+’
c[3] = ‘2’
c[4] = ‘+’
c[5] = ‘5’
c[6] = ‘)’

sacou?

ViniGodoy

Se você simplesmente quer separar caracter por caracter, basta usar um dos métodos mencionados.

Agora, se você quer separar os números, operandos e parênteses, o melhor é usar uma expressão regular e o método split.

Outra coisa. Não utilize Vector. Ele está lá mais por compatibilidade, mas seu uso é desaconselhado. Use o List no lugar:

List<String> minhaLista = new ArrayList<String>();

Se você quiser que sua lista seja sincronizada (como o Vector), você pode fazer:

minhaLista = Collections.synchronizedList(minhaLista);

Criado 8 de dezembro de 2006
Ultima resposta 11 de dez. de 2006
Respostas 5
Participantes 6