Problemas com comando Split

6 respostas
R

Tenho um campo digitado que realiza um calculo e concatena calculo e o que o cara digitou.
Por exemplo o cara digitou H+O=>H2O
o resultado é 2H+O=>H2O

o split teria que me mostrar 2H, +, depois O, => e H2O tudo separado, mas me mostra +, +, => e p certo era mostra o 2H, +, O, =>, H2O

String d1[] = concatenado
											.toString().split("=>");
											
											String d2[] =d1[0].split("\+");
											
											String dados[] =new String[d2.length + 1]; 
											
											for (int i = 0; i < dados.length; i++) {
												if(i<d2.length){
													dados[i] = d2[i];													
													
													dados[i] = "+";
												}else{
													dados[i] = d1[1];
													
													dados[i] = "=>";
												}
											}
											
																					             
											             //= d1[0].split("\+");
											
											pnlCentroOpcoes.setDados(dados);

se alguém puder me ajudar

6 Respostas

M

Cara, não entendi muito bem ai o que você quer produzir como resultado mas vai lá:

dentro do “if” e do “else” você ta sobrescrevendo o elemento do array “dados”
note:

dados[i] = "H"; // primeira iteração define dados[0] como "H" certo?
// logo abaixo acontece isso:
dados[i] = "+"; // voce ta redefinindo a mesma posição do array!! aqui i ainda é 0!

Você faz isso dentro do if e do else!
Acho que pra solucionar teria que ter um incremento dentro do seu if/else

R

O concatenado to String ja vem com o resultado que eu quero quebrar o problema que só aparece os sinais do split que eu determinei para definir o ponto de quebra.

M

Ta entao… Continuo nao entendendo tudo mas… Você disse que quer que o loop forme um array que tenha em cada posição

“2H”, “+”, “O”, “=>”, “H2O” -> 5 posições
partindo daí, quando você fala que o tamanho do array “dados” será o tamanho do array “d2 + 1” você ta dizendo que dados terá o tamanho = 3. Porque nesse caso d2 tem 2 de tamanho certo?
Então no mínimo seu array tem que ter 5 posições pra você receber o resultado que você quer…

Caso você mude o tamanho do seu array “dados” para 5 e mude somente a lógica dentro do for para esta:

if (i < d2.length) {
                dados[i++] = d2[0];

                dados[i++] = "+";
                dados[i] = d2[1];
            } else {
                dados[i++] = "=>";
                dados[i] = d1[1];
            }

Você terá como resultado um array com 5 posições do jeito que você pediu…
Era isso?

R

Cara, era isso mesmo, funfo certinho!!!
Valeu a ajuda.

lina

Oi,

o que conteudo tem na variavel concatenado ?

Ou seja, digamos que na variavel concatenado existe o valor.: 2H+O=>H2O

Você fazendo isso.:

String d1[] = concatenado   
.toString().split("=>");

Ele irá imprimir o seguinte.

d1[0] terá 2H+0
d1[1] terá H20

Logo, se você fizer.:

String d2[] =d1[0].split("\+");

Ele irá imprimir.:

d2[0] terá 2H
d2[1] terá O

Até ai está legal...só que chegando neste ponto.:

if(i<d2.length){   
        dados[i] = d2[i];   // Gravei em dados[0] o conteudo d2[0];                                              
           
        dados[i] = "+";   // Foi substituido o conteudo gravado anteriormente em dados[0] por "+";
    }else{   
        dados[i] = d1[1];   // igual
           
        dados[i] = "=>";   // igual
    }

Você está substituindo os valores da variavel dados[i] (veja no comentario.)

Tchauzin!

lina

droga… demorei tanto para já terem respondido… ainda bem que acertei!

Tchauzin!

Criado 2 de julho de 2009
Ultima resposta 2 de jul. de 2009
Respostas 6
Participantes 3