Problema com loop!

eu tenho um array e quando ele tiver o fim é para parar, mas…

[code]public class loopdados {
public String [][] dados = {{“C6H12O6”,“seta”, “C2H6O”,“CO2”, “fim”, “s”},
{“Na2CO3”, “HCl”, “seta”, “NaCl”, “H2O”, “CO2”},
{“C6H12O6”, “seta”, “C2H6O”, “CO2”,“fim”, “a”},};
String texto = null;
String textoantigo;
public static void main(String args[]) {
int i = 0;
int j = 0;

    loopdados p = new loopdados();
    
    for (i=0; p.dados[j][i].equals("fim"); i++) {
     p.textoantigo = p.texto;
     p.texto = p.textoantigo + p.dados[i][j] + " + ";
     System.out.print(p.texto);
    
}

} [/code]

Faltou o for pra o J.

[code]public class LoopDados {
public String [][] dados = {
{“C6H12O6”,“seta”, “C2H6O”,“CO2”, “fim”, “s”},
{“Na2CO3”, “HCl”, “seta”, “NaCl”, “H2O”, “CO2”},
{“C6H12O6”, “seta”, “C2H6O”, “CO2”,“fim”, “a”},};

public void fazerLoop() {
String textoAntigo = “”;
String texto = “”;

  for (int i = 0; i < dados.length; i++) {
     for (int j = 0; i < dados[i].length; j++) {
        if (dados[i][j].equals("fim"))
           return;

        textoAntigo = texto;
        texto = textoAntigo + dados[i][j] + " + ";
        System.out.print(texto);
     }
  }

}

public static void main(String args[]) {
new LoopDados().fazerLoop();
}
} [/code]

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 +

[code]public class LoopDados {
public String [][] dados = {
{“C6H12O6”,“seta”, “C2H6O”,“CO2”, “fim”, “s”},
{“Na2CO3”, “HCl”, “seta”, “NaCl”, “H2O”, “CO2”},
{“C6H12O6”, “seta”, “C2H6O”, “CO2”,“fim”, “a”},};

public void fazerLoop(int j) {
   String textoantigo = "";
   String texto = "";
   int i = 0;

// (deveria) serve para colocar o + entre duas substancias antes da seta
while (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 seta

  while (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);
    }

   


public static void main(String args[]) {
   new LoopDados().fazerLoop(1);
}

}[/code]

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.

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.

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:

public class LoopDados {

    public Equacao[] dados = { new Equacao(new String[] { "C6H12O6" }, new String[] { "C2H6O", "CO2" }),
            new Equacao(new String[] { "Na2CO3", "HCl" }, new String[] { "NaCl", "H2O", "CO2" }),
            new Equacao(new String[] { "C6H12O6" }, new String[] { "C2H6O", "CO2" }) };

    public void fazerLoop() {
        String texto = "";

        for (int i = 0; i < dados.length; i++) {
            texto = "";
            for (int j = 0; j < dados[i].ladoEsquerdo.length; j++) { //percorre os elementos do lado esquerdo
                if (j != 0) {  // se não é o primeiro adiciona um + antes
                    texto += " + ";
                }
                texto += dados[i].ladoEsquerdo[j];
            }
            texto = texto + "  \u2192  "; //todos os elementos do lado esquerdo inseridos, insere a seta

            for (int j = 0; j < dados[i].ladoDireito.length; j++) { //percorre os elementos do lado direito
                if (j != 0) { // se não é o primeiro adiciona um + antes
                    texto += " + ";
                }
                texto += dados[i].ladoDireito[j];
            }

            System.out.println(texto);
        }
    }

    public static void main(String args[]) {
        new LoopDados().fazerLoop();
    }

    class Equacao {

        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