This article is basically not for everyone, it is for those who deal with all chemistry related subjects or students who are have a need to find an element's molecular weight. Molecular weight basically is the element's weight and the finding the expression full molecular weight.
For Eg: H2O; in this case we can say that there are two Hydrogen atoms and 1 Oxygen atom so for the molecular weight calculation the expression would be say Hydrogen's atomic weight times 2 + Oxygen's atomic weight. Say for example the element Hydrogen has the atomic weight of 1 and oxygen has the atomic weight of 16. Then the expression result would be 1X2+16=18.
The following is the code for finding the molecular weight in Java:
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.io.*;
-
- public class ElementCalculation {
- static Hashtable hm;
- Hashtable[][] reactpro;
- Hashtable[] templist;
- Hashtable brentry = new Hashtable();
- double output, finaloutput;
- int newid = 0, roundopen = 0, boxopen = 0, fullLen = 0, indexLen = 0, hmrpos = 0, hmcpos = 0, digitvalue = 0, tempindex = 0, suffix = 0;
- String temp = "", args = "";
- boolean keyexists = false, yesno = false;
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- public ElementCalculation() {
- setInitialValues();
- initializeDefaultreactPro();
- }
- public void dispose() {
- temp = "";
- roundopen = boxopen = tempindex = hmrpos = hmcpos = digitvalue = fullLen = indexLen = newid = suffix = 0;
- brentry.clear();
- keyexists = yesno = false;
- finaloutput = output = 0;
- }
- private static void setInitialValues() {
- hm = new Hashtable();
- hm.put("H", new Double(1.0079));
- hm.put("He", new Double(4.0026));
- hm.put("Li", new Double(6.941));
- hm.put("Be", new Double(9.0122));
- hm.put("B", new Double(10.811));
- hm.put("C", new Double(12.0107));
- hm.put("N", new Double(14.0067));
- hm.put("O", new Double(15.9994));
- hm.put("F", new Double(18.9984));
- hm.put("Ne", new Double(20.1797));
- hm.put("Na", new Double(22.9897));
- hm.put("Mg", new Double(24.305));
- hm.put("Al", new Double(26.9815));
- hm.put("Si", new Double(28.0855));
- hm.put("P", new Double(30.9738));
- hm.put("S", new Double(32.065));
- hm.put("Cl", new Double(35.453));
- hm.put("K", new Double(39.0983));
- hm.put("Ar", new Double(39.948));
- hm.put("Ca", new Double(40.078));
- hm.put("Sc", new Double(44.9559));
- hm.put("Ti", new Double(47.867));
- hm.put("V", new Double(50.9415));
- hm.put("Cr", new Double(51.9961));
- hm.put("Mn", new Double(54.938));
- hm.put("Fe", new Double(55.845));
- hm.put("Ni", new Double(58.6934));
- hm.put("Co", new Double(58.9332));
- hm.put("Cu", new Double(63.546));
- hm.put("Zn", new Double(65.39));
- hm.put("Ga", new Double(69.723));
- hm.put("Ge", new Double(72.64));
- hm.put("As", new Double(74.9216));
- hm.put("Se", new Double(78.96));
- hm.put("Br", new Double(79.904));
- hm.put("Kr", new Double(83.8));
- hm.put("Rb", new Double(85.4678));
- hm.put("Sr", new Double(87.62));
- hm.put("Y", new Double(88.9059));
- hm.put("Zr", new Double(91.224));
- hm.put("Nb", new Double(92.9064));
- hm.put("Mo", new Double(95.94));
- hm.put("Tc", new Double(98));
- hm.put("Ru", new Double(101.07));
- hm.put("Rh", new Double(102.9055));
- hm.put("Pd", new Double(106.42));
- hm.put("Ag", new Double(107.8682));
- hm.put("Cd", new Double(112.411));
- hm.put("In", new Double(114.818));
- hm.put("Sn", new Double(118.71));
- hm.put("Sb", new Double(121.76));
- hm.put("I", new Double(126.9045));
- hm.put("Te", new Double(127.6));
- hm.put("Xe", new Double(131.293));
- hm.put("Cs", new Double(132.9055));
- hm.put("Ba", new Double(137.327));
- hm.put("La", new Double(138.9055));
- hm.put("Ce", new Double(140.116));
- hm.put("Pr", new Double(140.9077));
- hm.put("Nd", new Double(144.24));
- hm.put("Pm", new Double(145));
- hm.put("Sm", new Double(150.36));
- hm.put("Eu", new Double(151.964));
- hm.put("Gd", new Double(157.25));
- hm.put("Tb", new Double(158.9253));
- hm.put("Dy", new Double(162.5));
- hm.put("Ho", new Double(164.9303));
- hm.put("Er", new Double(167.259));
- hm.put("Tm", new Double(168.9342));
- hm.put("Yb", new Double(173.04));
- hm.put("Lu", new Double(174.967));
- hm.put("Hf", new Double(178.49));
- hm.put("Ta", new Double(180.9479));
- hm.put("W", new Double(183.84));
- hm.put("Re", new Double(186.207));
- hm.put("Os", new Double(190.23));
- hm.put("Ir", new Double(192.217));
- hm.put("Pt", new Double(195.078));
- hm.put("Au", new Double(196.9665));
- hm.put("Hg", new Double(200.59));
- hm.put("Tl", new Double(204.3833));
- hm.put("Pb", new Double(207.2));
- hm.put("Bi", new Double(208.9804));
- hm.put("Po", new Double(209));
- hm.put("At", new Double(210));
- hm.put("Rn", new Double(222));
- hm.put("Fr", new Double(223));
- hm.put("Ra", new Double(226));
- hm.put("Ac", new Double(227));
- hm.put("Pa", new Double(231.0359));
- hm.put("Th", new Double(232.0381));
- hm.put("Np", new Double(237));
- hm.put("U", new Double(238.0289));
- hm.put("Am", new Double(243));
- hm.put("Pu", new Double(244));
- hm.put("Cm", new Double(247));
- hm.put("Bk", new Double(247));
- hm.put("Cf", new Double(251));
- hm.put("Es", new Double(252));
- hm.put("Fm", new Double(257));
- hm.put("Md", new Double(258));
- hm.put("No", new Double(259));
- hm.put("Rf", new Double(261));
- hm.put("Lr", new Double(262));
- hm.put("Db", new Double(262));
- hm.put("Bh", new Double(264));
- hm.put("Sg", new Double(266));
- hm.put("Mt", new Double(268));
- hm.put("Rg", new Double(272));
- hm.put("Hs", new Double(277));
- hm.put("Ds", new Double(280));
- }
-
-
- private void initializeDefaultreactPro() {
- reactpro = new Hashtable[2][];
- reactpro[0] = new Hashtable[1];
- reactpro[1] = new Hashtable[1];
- initializeReactPro();
- }
-
- private void initializeReactPro() {
- for (int i = 0; i < reactpro.length; i++)
-
- {
- for (int j = 0; j < reactpro[i].length; j++)
- reactpro[i][j] = new Hashtable();
- }
- }
- private boolean contains(String args) {
- yesno = false;
- for (int i = 0; i < args.length(); i++) {
- if (args.charAt(i) == '(' || args.charAt(i) == '[') {
- yesno = true;
- break;
- }
- }
- return yesno;
- }
- public void accept() {
- try {
- System.out.println("Enter your expression");
- args = br.readLine();
- if (contains(args) == true)
- getNoOfBrackets(args);
- reactpro[hmrpos][hmcpos].clear();
- calculateLength(args);
- matchElementToUpdate(reactpro[hmrpos][hmcpos], brentry);
- calculateMolWeight(hmrpos, hmcpos);
- } catch (Exception e1) {}
- }
-
-
- private void getNoOfBrackets(String args) {
- for (int i = 0; i < args.length(); i++) {
- if (args.charAt(i) == '(' || args.charAt(i) == '[')
- tempindex++;
- }
- templist = new Hashtable[tempindex];
-
- tempindex = 0;
- initializeTempHash();
- }
-
- private void initializeTempHash() {
- for (int i = 0; i < templist.length; i++)
- templist[i] = new Hashtable();
- }
- private void calculateLength(String args) {
- fullLen = args.length();
- indexLen = fullLen - 1;
- readAtom(args);
- }
-
- private int calculateNextPosition(int org) {
- int id = 0;
- if (org == fullLen - 1) {
- if (boxopen > 0 || roundopen > 0)
- id = org;
- else
- id = 0;
- } else if (org < fullLen - 1)
- id = org + 1;
- newid = id;
- return newid;
- }
- private void readAtom(String args) {
- for (int i = 0, nxtpos = 0; i < args.length(); i++) {
- temp = "";
- nxtpos = calculateNextPosition(i);
- if (Character.isUpperCase(args.charAt(i)) && Character.isUpperCase(args.charAt(indexLen - (indexLen - nxtpos)))) {
- temp = String.valueOf(args.charAt(i));
- addentry(1);
- } else if (Character.isUpperCase(args.charAt(i)) && (args.charAt(indexLen - (indexLen - nxtpos)) == '[' || args.charAt(indexLen - (indexLen - nxtpos)) == '(')) {
- temp = String.valueOf(args.charAt(i));
- addentry(1);
-
- if (args.charAt(indexLen - (indexLen - nxtpos)) == '(')
- roundopen++;
- else
- boxopen++;
-
- i = readBrackets(args, indexLen - (indexLen - nxtpos));
- } else if (Character.isUpperCase(args.charAt(i)) && Character.isDigit(args.charAt(indexLen - (indexLen - nxtpos)))) {
-
- temp = String.valueOf(args.charAt(i));
-
- i = IsDigit(args, indexLen - (indexLen - nxtpos));
- addentry(digitvalue);
- } else if (Character.isUpperCase(args.charAt(i))) {
- temp = String.valueOf(args.charAt(i));
- i = readLower(args, i);
- i = i - 1;
- } else if (args.charAt(i) == '[') {
- boxopen++;
- if (!brentry.isEmpty()) {
- addToTempHash();
- tempindex++;
- }
- i = readBrackets(args, i);
- } else if (args.charAt(i) == '(') {
- roundopen++;
- if (!brentry.isEmpty()) {
- addToTempHash();
- tempindex++;
- }
- i = readBrackets(args, i);
- }
- }
- }
-
- private int readLower(String args, int idx) {
- for (int j = idx + 1, nxtpos = 0; j < args.length(); j++) {
- nxtpos = calculateNextPosition(j);
- if (Character.isLowerCase(args.charAt(j)) && (!(Character.isDigit(args.charAt(indexLen - (indexLen - nxtpos))) || Character.isLowerCase(args.charAt(indexLen - (indexLen -
- nxtpos)))))) {
- temp += String.valueOf(args.charAt(j));
- if (roundopen == 0 && boxopen == 0)
- addentry(1);
- else {
- if (!brentry.isEmpty()) {
- addToTempHash();
- tempindex++;
- }
- addentry(1);
- }
- } else if (Character.isLowerCase(args.charAt(j)) && Character.isDigit(args.charAt(indexLen - (indexLen - nxtpos)))) {
- temp += String.valueOf(args.charAt(j));
- j = IsDigit(args, indexLen - (indexLen - nxtpos));
- addentry(digitvalue);
- } else if (Character.isLowerCase(args.charAt(j)) && args.charAt(indexLen - (indexLen - nxtpos)) == '[') {
- temp += String.valueOf(args.charAt(j));
- addentry(1);
- boxopen++;
-
- addToTempHash();
- tempindex++;
- j = readBrackets(args, indexLen - (indexLen - nxtpos));
- } else if (Character.isLowerCase(args.charAt(j)) && args.charAt(indexLen - (indexLen - nxtpos)) == '(') {
- temp += String.valueOf(args.charAt(j));
- addentry(1);
- roundopen++;
-
- addToTempHash();
- tempindex++;
- j = readBrackets(args, indexLen - (indexLen - nxtpos));
- } else if (Character.isDigit(args.charAt(j)) && args.charAt(indexLen - (indexLen - nxtpos)) == ')') {
- j = IsDigit(args, j);
- if (roundopen > 1) {
- keyexists = brentry.containsKey(temp);
- if (keyexists) {
- suffix = digitvalue;
- j = IsDigit(args, indexLen - (indexLen - nxtpos) + 1);
- digitvalue *= suffix;
- suffix = 0;
- addentry(digitvalue);
- roundopen--;
- } else
- addentry(digitvalue);
- } else
- addentry(digitvalue);
- } else if (Character.isDigit(args.charAt(j)) && args.charAt(indexLen - (indexLen - nxtpos)) == ']') {
- j = IsDigit(args, j);
- if (boxopen > 1) {
- keyexists = brentry.containsKey(temp);
- if (keyexists) {
- suffix = digitvalue;
- j = IsDigit(args, indexLen - (indexLen - nxtpos) + 1);
- digitvalue *= suffix;
- suffix = 0;
- addentry(digitvalue);
- boxopen--;
- } else
- addentry(digitvalue);
- } else
- addentry(digitvalue);
- } else if (Character.isLowerCase(args.charAt(j))) {
- temp += String.valueOf(args.charAt(j));
- for (int k = j + 1, nxtpos1 = 0; j < args.length(); k++) {
- nxtpos1 = calculateNextPosition(k);
- if (Character.isLowerCase(args.charAt(k)) && !Character.isDigit(args.charAt(indexLen - (indexLen - nxtpos1)))) {
- temp += String.valueOf(args.charAt(k));
- addentry(1);
- } else if (Character.isLowerCase(args.charAt(k)) && Character.isDigit(args.charAt(indexLen - (indexLen - nxtpos1)))) {
- temp += String.valueOf(args.charAt(k));
- k = IsDigit(args, k);
- addentry(digitvalue);
- } else if (Character.isLowerCase(args.charAt(k)) && args.charAt(indexLen - (indexLen - nxtpos1)) == '[') {
- temp += String.valueOf(args.charAt(k));
- addentry(1);
- boxopen++;
- k = readBrackets(args, indexLen - (indexLen - nxtpos1));
- } else if (Character.isLowerCase(args.charAt(k)) && args.charAt(indexLen - (indexLen - nxtpos1)) == '(') {
- temp += String.valueOf(args.charAt(k));
- addentry(1);
- roundopen++;
- k = readBrackets(args, indexLen - (indexLen - nxtpos1));
- } else if (Character.isDigit(args.charAt(k))) {
- k = IsDigit(args, k);
- addentry(digitvalue);
- } else if (Character.isUpperCase(args.charAt(k))) {
- j = k - 1;
- break;
- } else {
- j = k - 1;
- break;
- }
- }
- } else if (Character.isDigit(args.charAt(j)) && args.charAt(indexLen - (indexLen - nxtpos)) != ')') {
- j = IsDigit(args, j);
- addentry(digitvalue);
- } else if (Character.isUpperCase(args.charAt(j))) {
- newid = j;
- break;
- } else if (args.charAt(j) == '[' && args.charAt(indexLen - (indexLen - nxtpos)) == '(') {
- boxopen++;
- j = readBrackets(args, indexLen - (indexLen - nxtpos));
- } else if (args.charAt(j) == '[') {
- boxopen++;
- if (boxopen > 0) {
- if (!brentry.isEmpty()) {
- addToTempHash();
- tempindex++;
- }
- }
- j = readBrackets(args, j);
- } else if (args.charAt(j) == '(') {
- roundopen++;
- if (roundopen > 0) {
- if (!brentry.isEmpty()) {
- addToTempHash();
- tempindex++;
- }
- }
- j = readBrackets(args, j);
- } else if (args.charAt(j) == ')' && Character.isDigit(args.charAt(indexLen - (indexLen - nxtpos)))) {
- roundopen--;
- j = IsDigit(args, indexLen - (indexLen - nxtpos));
- if (boxopen == 0 && roundopen == 0) {
- if (!brentry.isEmpty()) {
- updateentry(brentry, digitvalue);
- tempindex = tempindex > 0 ? tempindex = tempindex - 1 : 0;
- if (!templist[tempindex].isEmpty())
- matchElementToUpdate(this.brentry, this.templist[tempindex]);
- else {
-
- addToReactPro();
- }
- } else
- updateentry(reactpro[hmrpos][hmcpos], digitvalue);
- } else {
- updateentry(brentry, digitvalue);
- tempindex = tempindex > 0 ? tempindex = tempindex - 1 : 0;
- if (!templist[tempindex].isEmpty())
- matchElementToUpdate(brentry, templist[tempindex]);
- else {
-
- addToReactPro();
- }
- }
- } else if (args.charAt(j) == ']' && Character.isDigit(args.charAt(indexLen - (indexLen - nxtpos)))) {
- boxopen--;
- j = IsDigit(args, indexLen - (indexLen - nxtpos));
- if (boxopen == 0 && roundopen == 0) {
- if (!brentry.isEmpty()) {
- updateentry(brentry, digitvalue);
- tempindex = tempindex > 0 ? tempindex = tempindex - 1 : 0;
- if (!templist[tempindex].isEmpty())
- matchElementToUpdate(brentry, templist[tempindex]);
- else {
-
- addToReactPro();
- }
- } else
- updateentry(reactpro[hmrpos][hmcpos], digitvalue);
- } else {
- updateentry(brentry, digitvalue);
- tempindex = tempindex > 0 ? tempindex = tempindex - 1 : 0;
- if (!templist[tempindex].isEmpty())
- matchElementToUpdate(this.brentry, this.templist[tempindex]);
- else {
- suffix = 0;
- addToReactPro();
- }
- }
- } else if (args.charAt(j) == ')') {
- roundopen--;
- if (roundopen == 0 && boxopen == 0)
- addToReactPro();
- else {
- tempindex = tempindex > 0 ? tempindex = tempindex - 1 : 0;
- if (!templist[tempindex].isEmpty())
- matchElementToUpdate(brentry, templist[tempindex]);
- else {
- suffix = 0;
- addToReactPro();
- }
- }
- } else if (args.charAt(j) == ']') {
- boxopen--;
- if (roundopen == 0 && boxopen == 0)
- addToReactPro();
- else {
- tempindex = tempindex > 0 ? tempindex = tempindex - 1 : 0;
- if (!templist[tempindex].isEmpty())
- matchElementToUpdate(brentry, templist[tempindex]);
- else {
- suffix = 0;
- addToReactPro();
- }
- }
- }
- newid = j;
- }
- return newid;
- }
-
- private int readBrackets(String args, int idx) {
- for (int i = idx + 1, nxtpos = 0; i < args.length(); i++) {
- nxtpos = calculateNextPosition(i);
- if (Character.isUpperCase(args.charAt(i)) && Character.isUpperCase(args.charAt(indexLen - (indexLen - nxtpos)))) {
- temp = String.valueOf(args.charAt(i));
- addentry(1);
- } else if (Character.isUpperCase(args.charAt(i)) && args.charAt(indexLen - (indexLen - nxtpos)) == '[') {
- temp = String.valueOf(args.charAt(i));
- addentry(1);
- addToTempHash();
- tempindex++;
- boxopen++;
-
- i = readBrackets(args, indexLen - (indexLen - nxtpos));
- } else if (Character.isUpperCase(args.charAt(i)) && args.charAt(indexLen - (indexLen - nxtpos)) == '(') {
- temp = String.valueOf(args.charAt(i));
- addentry(1);
- addToTempHash();
- tempindex++;
- roundopen++;
-
- i = readBrackets(args, indexLen - (indexLen - nxtpos));
- } else if (Character.isUpperCase(args.charAt(i)) && args.charAt(indexLen - (indexLen - nxtpos)) == ')') {
- temp = String.valueOf(args.charAt(i));
- addentry(1);
- i = readLower(args, i);
- i = i - 1;
- } else if (Character.isUpperCase(args.charAt(i)) && args.charAt(indexLen - (indexLen - nxtpos)) == ']') {
- temp = String.valueOf(args.charAt(i));
- addentry(1);
- i = readLower(args, i);
- i = i - 1;
- } else if (args.charAt(i) == '(') {
- roundopen++;
- if (!brentry.isEmpty()) {
- addToTempHash();
- tempindex++;
- }
- continue;
- } else if (args.charAt(i) == '[') {
- boxopen++;
- if (!brentry.isEmpty()) {
- addToTempHash();
- tempindex++;
- }
- continue;
- } else if (Character.isUpperCase(args.charAt(i))) {
- temp = String.valueOf(args.charAt(i));
- i = readLower(args, i);
- i = i - 1;
- }
- newid = i;
- }
- return newid;
- }
-
-
- private void addentry(int value) {
- if (boxopen > 0) {
- keyexists = brentry.containsKey(temp);
- if (roundopen > 0) {
- if (keyexists == false)
- brentry.put(temp, new Integer(value));
- else
- updateKeyValue(temp, value, brentry);
- } else {
- if (keyexists == false)
- brentry.put(temp, new Integer(value));
- else
- updateKeyValue(temp, value, brentry);
- }
- } else if (roundopen > 0) {
- keyexists = brentry.containsKey(temp);
- if (keyexists == false)
- brentry.put(temp, new Integer(value));
- else
- updateKeyValue(temp, value, brentry);
- } else {
- keyexists = reactpro[hmrpos][hmcpos].containsKey(temp);
- if (keyexists == false)
- reactpro[hmrpos][hmcpos].put(temp, new Integer(value));
- else
- updateKeyValue(temp, value, reactpro[hmrpos][hmcpos]);
- }
- }
-
-
-
- private void addToTempHash() {
- Enumeration keys = brentry.keys();
- while (keys.hasMoreElements()) {
- Object retrievedKey = keys.nextElement();
- templist[tempindex].put(retrievedKey, brentry.get(retrievedKey));
- }
- brentry.clear();
- }
-
- private int IsDigit(String args, int idx) {
- String variable = "";
- int newid2 = 0;
- for (int k = idx; k < fullLen; k++) {
- if (Character.isDigit(args.charAt(k))) {
- variable += String.valueOf(args.charAt(k));
- newid2 = k;
- } else {
- newid2 = k - 1;
- break;
- }
- }
- newid = newid2;
- if (variable.equals("") || variable.equals("0"))
- digitvalue = 1;
- else
- digitvalue = Integer.parseInt(variable);
- return newid;
- }
-
- protected void updateentry(Hashtable h, int value) {
- Enumeration keys = h.keys();
- while (keys.hasMoreElements()) {
- Object retrievedKey = keys.nextElement();
- h.put(retrievedKey, (Object) String.valueOf(Integer.parseInt(String.valueOf(h.get(retrievedKey))) * value));
- }
- }
-
-
-
- public void matchElementToUpdate(Hashtable a, Hashtable b) {
-
- yesno = a.isEmpty() && !b.isEmpty() ? true : false;
- if (yesno == true)
-
- {
- Enumeration keys = b.keys();
- while (keys.hasMoreElements()) {
- Object retrievedKey = keys.nextElement();
- a.put(retrievedKey, b.get(retrievedKey));
- }
- } else {
- Enumeration keys1 = a.keys();
- while (keys1.hasMoreElements()) {
- Object retrievedKey1 = keys1.nextElement();
- Enumeration keys2 = b.keys();
- while (keys2.hasMoreElements()) {
- Object retrievedKey2 = keys2.nextElement();
- if (a.containsKey(retrievedKey2)) {
- if (retrievedKey1.equals(retrievedKey2)) {
- int result = Integer.parseInt(String.valueOf(a.get(retrievedKey1))) + Integer.parseInt(String.valueOf(b.get(retrievedKey2)));
- a.put(retrievedKey1, (Object) String.valueOf(result));
- b.remove(retrievedKey2);
- }
- } else {
- a.put(retrievedKey2, b.get(retrievedKey2));
- b.remove(retrievedKey2);
- }
- }
- }
- }
- b.clear();
- }
- private void addToReactPro() {
- Enumeration keys = brentry.keys();
- while (keys.hasMoreElements()) {
- Object retrievedKey = keys.nextElement();
- keyexists = reactpro[hmrpos][hmcpos].containsKey(retrievedKey);
- if (keyexists == false)
- reactpro[hmrpos][hmcpos].put(retrievedKey, brentry.get(retrievedKey));
- else {
- int value = Integer.parseInt(String.valueOf(brentry.get(retrievedKey)));
- updateKeyValue(String.valueOf(retrievedKey), value, reactpro[hmrpos][hmcpos]);
- }
- }
- brentry.clear();
- }
- private void updateKeyValue(String key, int newVal, Hashtable h) {
- Enumeration keys = h.keys();
- while (keys.hasMoreElements()) {
- Object retrievedKey = keys.nextElement();
- if (retrievedKey.equals(key)) {
- if (suffix != 0) {
- h.put(retrievedKey, String.valueOf(Integer.parseInt(String.valueOf(h.get(retrievedKey))) * newVal));
- suffix = 0;
- } else
- h.put(retrievedKey, String.valueOf(Integer.parseInt(String.valueOf(h.get(retrievedKey))) + newVal));
- break;
- }
- }
- }
-
- private double getMolWeight(String key) {
- double value = 0;
- Enumeration keys = hm.keys();
- while (keys.hasMoreElements()) {
- Object retrievedKey = keys.nextElement();
- if (retrievedKey.equals(key)) {
- value = Double.parseDouble(String.valueOf(hm.get(retrievedKey)));
- break;
- }
- }
- return value;
- }
-
-
- protected void calculateMolWeight(int rindex, int cindex) {
- finaloutput = 0;
- Enumeration keys = reactpro[rindex][cindex].keys();
- while (keys.hasMoreElements()) {
- Object retrievedKey = keys.nextElement();
- output = getMolWeight(String.valueOf(retrievedKey));
- finaloutput += output * Integer.parseInt(String.valueOf(reactpro[rindex][cindex].get(retrievedKey)));
- }
- System.out.println(finaloutput);
- }
- public static void main(String args[]) {
- ElementCalculation obj = new ElementCalculation();
- obj.setInitialValues();
- obj.accept();
- }
- }