2014-01-20 29 views
0

因此,我创建了一个GUI,在该GUI中可以计算摩尔质量,质量或摩尔数,并且在调用我的方法时我似乎无法得到计算结果。我正在使用并行阵列,我想这可能是问题。顺便说一句,moleMass是全球性的,但我不知道如何在这里格式化。谢谢。程序不会返回数值

private void btnGoActionPerformed(java.awt.event.ActionEvent evt) {          

int indexOfElements = cmbElements.getSelectedIndex(); 
Double numberOfMass = Double.parseDouble(txtInputMass.getText()); 
Double numberOfMoles = Double.parseDouble(txtInputMoles.getText()); 


    if (chkMoles.isSelected()==true) 
    { 
    txtAnswer.setText(solveForMoles(numberOfMass).toString() + " mol"); 
    } 
    else if (chkMolarMass.isSelected()==true) 
    { 
    txtAnswer.setText(solveForMolarMass(numberOfMass, numberOfMoles).toString() + "    
    g/mol"); 

    } 
    else if (chkMass.isSelected()==true) 
    { 
    txtAnswer.setText(solveForMass(numberOfMoles).toString() + " g"); 
    } 
    else 
    { 
    txtAnswer.setText ("Please make a selection"); 
    } 


private Double solveForMoles (double mass){ 

int indexOfElements = cmbElements.getSelectedIndex(); 
double numberOfMoles = mass/molarMass[indexOfElements]; 
return (Double.parseDouble (x.format(numberOfMoles))); 
} 
private Double solveForMass (double moles){ 
int indexOfElements = cmbElements.getSelectedIndex(); 
double numberOfMass = moles*molarMass[indexOfElements]; 
return (Double.parseDouble (x.format(numberOfMass))); 
} 

private Double solveForMolarMass (double masss, double moless){ 

    double numberOfMolarMass = masss/moless; 
    return (Double.parseDouble(x.format (numberOfMolarMass))); 
    } 

回答

0

我建议你做一些修改:

  1. 封装所有这些计算到一个合理的Java对象,而不是并行阵列。 Java是一种面向对象的语言。
  2. 移动界面外的所有计算。编写该计算对象,JUnit彻底测试,然后将其引入UI。计算机科学和所有解决问题的方法,最好使用分而治之。