Problema juntar dois Arrays

2 respostas
R

Eu estou tentando fazer um balanceamento quimico, eu faço o calculo do balanceamento e monto um vetor com os coeficientes, faço os arrays, blz até ai, porém eu não consigo juntar os ceficientes do calculo com o que foi digitado que são os métodos getTextosDireito e getTextosEsquerdo.

Por exemplo: o cara digitou H+O -> H2O
o resultado deveria ser 2H+1O ->1H2O
mas aparece 2H+1 -> 1

O código é um poko grande, mas eu ia acabar me perdendo na explicação se fosse explicar e não mostrar o código.

import model.*;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import control.SeparaString;
import view.paineis.PnlCampos;
import view.paineis.PnlCentro;
import view.paineis.PnlSul;
import java.util.ArrayList;
public class PainelPrincipal extends JPanel {

	private static final long serialVersionUID = 1L;	
	private PnlCentro pnlCentro;
	public static int jes = 15;
	private PnlSul pnlSul;
	public PainelPrincipal() {
		setLayout(new BorderLayout(15, 15));
		add(new JLabel("Entre com as fórmulas"), BorderLayout.NORTH);		
		pnlCentro = new PnlCentro();
		add(pnlCentro, BorderLayout.CENTER);

		pnlSul = new PnlSul();
		
		add(pnlSul, BorderLayout.SOUTH);

		pnlSul.getBtnLimpar().addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				pnlCentro.limpaTextos();
			}

		});
		pnlSul.getBtnCalcular().addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				
				String dadosDireita = "";
				String dadosEsquerda = "";
				
				int numCaixa=0;
				boolean encontrou,resultado;
				String[] coeficientesEquacao={ "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R"};
				
				ArrayList<Equacao> equacoesElementos=new ArrayList<Equacao>();
				
				for (int i = 0; i < PnlCampos.TOTAL_CAMPOS; i++) {
					for (int j = 0; j < PnlCampos.TOTAL_CAMPOS; j++) {						
						try{
							ArrayList<ElementoQuimico> bloco=SeparaString.retornaElementos(pnlCentro.getTextosEsquerdo()[i][j]);
							
							for(int k=0;k<bloco.size();k++){ //varre todos os elementos químicos da caixa de texto lida
								encontrou=false;
								for(int m=0;m<equacoesElementos.size();m++){ //varre todas as equações para encontrar a equação daquele elemento que está sendo lido no momento
									if (equacoesElementos.get(m).getElemento().getElemento().equals(bloco.get(k).getElemento())){
										equacoesElementos.get(m).acrescentaEquacao(bloco.get(k).getCoeficiente()+""+coeficientesEquacao[numCaixa]);
										encontrou=true;
										break;
									}
								}	
								if (!encontrou){
									equacoesElementos.add(new Equacao(bloco.get(k),bloco.get(k).getCoeficiente()+""+coeficientesEquacao[numCaixa]));
								}
							}
							
						} catch (Exception e) {
							JOptionPane.showMessageDialog(null,"Expressão da Esquerda inválida","Expressão inválida",JOptionPane.ERROR_MESSAGE);
							
						}
						numCaixa++;
						
					}
				}
				
				for(int i=0;i<equacoesElementos.size();i++){
					equacoesElementos.get(i).acrescentaEquacao("=");
				}
				
				for (int i = 0; i < PnlCampos.TOTAL_CAMPOS; i++) {
					for (int j = 0; j < PnlCampos.TOTAL_CAMPOS; j++) {						
						try{
							ArrayList<ElementoQuimico> bloco=SeparaString.retornaElementos(pnlCentro.getTextosDireito()[i][j]);
							
							for(int k=0;k<bloco.size();k++){ //varre todos os elementos químicos da caixa de texto lida
								encontrou=false;
								for(int m=0;m<equacoesElementos.size();m++){ //varre todas as equações para encontrar a equação daquele elemento que está sendo lido no momento
									if (equacoesElementos.get(m).getElemento().getElemento().equals(bloco.get(k).getElemento())){
										equacoesElementos.get(m).acrescentaEquacao(bloco.get(k).getCoeficiente()+""+coeficientesEquacao[numCaixa]);
										encontrou=true;
										break;
									}
								}	
								if (!encontrou){
									equacoesElementos.add(new Equacao(bloco.get(k),bloco.get(k).getCoeficiente()+""+coeficientesEquacao[numCaixa]));
								}
							}
							
						} catch (Exception e) {
							JOptionPane.showMessageDialog(null,"Expressão da Direita inválida","Expressão inválida",JOptionPane.ERROR_MESSAGE);
							
						}
						numCaixa++;
						
					}
				}
				
				for (int a=1;a<10;a++){
					for (int b=1;b<10;b++){
						for (int c=1;c<10;c++){
						
													for (int j=1;j<10;j++){
														for (int k=1;k<10;k++){
															for (int l=1;l<10;l++){
																
							resultado=true;
							for(int contador=0;contador<equacoesElementos.size();contador++){
						
								int[] vetor={a,b,c,j,k,l};
								if (!equacoesElementos.get(contador).testeEquacao(vetor)){									
									resultado=false;
								}					
							}
							if (resultado){
								
								for ( int z = 0; z< PnlCampos.TOTAL_CAMPOS; z++) {
								for ( int w = 0; w< PnlCampos.TOTAL_CAMPOS; w++) {
									dadosEsquerda = pnlCentro.getTextosEsquerdo()[z][w];
							
																
								JOptionPane.showMessageDialog(null, a+" "+pnlCentro.getTextosEsquerdo()[z] [w]+"+ "+b+" "+c+" "+j+" "+k+" "+l);
								
								
								
								}
								
							}
						}
					}
				}
			 }
						
																	}
																}

			}

			}});
	}

	
}

Se alguém puder me ajudar,
desde já agradeço.

2 Respostas

R

O meu problema é da linha 121 em diante, é nessa parte que eu to me perdendo e não consigo pega o que foi digitado e jogar o coeficiente na frente do que foidigitado.

wfrsilva

Tem algum jnlp ou class rodando em algum lugar?

Gostaria de testar como a informação eh passada para o java

Criado 22 de junho de 2009
Ultima resposta 8 de dez. de 2015
Respostas 2
Participantes 2