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.