Problema com Matriz

2 respostas
R

Tenho uma matriz de 3 por 3 onde são digitados elementos quimicos para o balanceamento.
Fiz um array onde pego o q foi digitado e faço o calculo do coeficiente, porém, não consigo retornar o coeficiente certo qdo eu consigo pegar o que foi digitado.

Por exemplo: o cara digitou H+O=> H2O

o resultado certo            2H+O=>H2O

                mas aparece                  2H+2O=>2H2O

Se alguém puder me ajudar.

2 Respostas

JavaMania

Desculpa cara mas não entendi ao certo o que vc ta fazendo, pode postar o código?

R
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) {
				
		
				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,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r};							
								int[] vetor={a,b,c,j,k,l};
								if (!equacoesElementos.get(contador).testeEquacao(vetor)){									
									resultado=false;
								}					
							}
							if (resultado){
//18/06/09								
							
								ArrayList <String> al = new ArrayList<String>();
								for ( int z = 0; z< PnlCampos.TOTAL_CAMPOS; z++) {
								for ( int w = 0; w< PnlCampos.TOTAL_CAMPOS; w++) {
								
								al.add(a+ pnlCentro.getTextosEsquerdo()[z][w]);
								System.out.println(al);
							
								
								
								}
								
								System.exit(0);
//18/06/09									
							}
								
						}
					}
				}
			 }
						
																	}
																}

			}

			}});
	}

	public static void main(String[] args) {
		new Frame().setVisible(true);
	}
}
Criado 1 de julho de 2009
Ultima resposta 1 de jul. de 2009
Respostas 2
Participantes 2