Voltei....
eu quero colocar em forma de equação química:
ex.C6H12O6 --> C2H6O + CO2
eu to testando a dados[1][] pq é o maior e nao está saindo como o desejado
eu tenho como saida isto:
Na2CO3HCl →
Na2CO3HCl → NaCl +
Na2CO3HCl → NaCl +
publicclassLoopDados{publicString[][]dados={{"C6H12O6","seta","C2H6O","CO2","fim","s"},{"Na2CO3","HCl","seta","NaCl","H2O","CO2"},{"C6H12O6","seta","C2H6O","CO2","fim","a"},};publicvoidfazerLoop(intj){Stringtextoantigo="";Stringtexto="";inti=0;// (deveria) serve para colocar o + entre duas substancias antes da setawhile(i<dados.length){texto=textoantigo+dados[j][i];textoantigo=texto;i++;if(dados[j][i].equals("seta")){texto=textoantigo+" \u2192 ";textoantigo=texto;System.out.println(texto);i++;}else{texto=textoantigo+" + ";}}//(deveria) serve para colocar o + entre duas substancias depois da setawhile(i<=dados.length){texto=textoantigo+dados[j][i];textoantigo=texto;i++;if(dados[j][i].equals("fim")){}else{texto=textoantigo+" + ";textoantigo=texto;}System.out.println(texto);}System.out.println(texto);}publicstaticvoidmain(Stringargs[]){newLoopDados().fazerLoop(1);}}
edu_fernandes
Pedro.
Repare que você esta fazendo a seguinte lógica.
Você varre toda a sua equação quimica a procura do ‘seta’ para por um + antes dela e somente depois você parte para a busca da ‘seta’ para por o + depois dela.
Se vc já achou a seta logo vc sabe que antes dela terá um + e depois também.
Entendeu a lógica.
Ou você colocaria um while dentro do outro. Ou então basta procurar uma lógica que você compreenda para assim que eu encontrar ‘seta’ colocar + antes de depois dela.
Abraço e espero ter ajudado.
edu_fernandes
Desconsidere boa parte do que eu escrevi.
Em um erro de leitura não peercebi que depois você busca por ‘fim’ e não por ‘seta’ novamente.
pmlm
Aquela “s” e aquele “a” são lixo, certo? Isso é sinal que o array bidimensional não deve ser a melhor solução para o teu problema…
Porque não crias uma estrutura tua?
Algo assim:
publicclassLoopDados{publicEquacao[]dados={newEquacao(newString[]{"C6H12O6"},newString[]{"C2H6O","CO2"}),newEquacao(newString[]{"Na2CO3","HCl"},newString[]{"NaCl","H2O","CO2"}),newEquacao(newString[]{"C6H12O6"},newString[]{"C2H6O","CO2"})};publicvoidfazerLoop(){Stringtexto="";for(inti=0;i<dados.length;i++){texto="";for(intj=0;j<dados[i].ladoEsquerdo.length;j++){//percorre os elementos do lado esquerdoif(j!=0){// se não é o primeiro adiciona um + antestexto+=" + ";}texto+=dados[i].ladoEsquerdo[j];}texto=texto+" \u2192 ";//todos os elementos do lado esquerdo inseridos, insere a setafor(intj=0;j<dados[i].ladoDireito.length;j++){//percorre os elementos do lado direitoif(j!=0){// se não é o primeiro adiciona um + antestexto+=" + ";}texto+=dados[i].ladoDireito[j];}System.out.println(texto);}}publicstaticvoidmain(Stringargs[]){newLoopDados().fazerLoop();}classEquacao{String[]ladoEsquerdo;String[]ladoDireito;Equacao(String[]ladoEsquerdo,String[]ladoDireito){this.ladoEsquerdo=ladoEsquerdo;this.ladoDireito=ladoDireito;}}}
NOTAS:
Idealmente a variável texto deve ser StringBuilder e não String
Como há código repetido para percorrer os arrays, esta parte pode ser separada em outro método