online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code    Language
import java.util.HashMap; import java.util.Map; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class MolecularMassCalculator { private static final Pattern elementPattern = Pattern.compile("[A-Z][a-z]*"); private static final Map<String, Double> elementMap = new HashMap<>(); static { elementMap.put("H", 1.008); elementMap.put("He", 4.0026); elementMap.put("Li", 6.941); elementMap.put("Be", 9.0122); elementMap.put("B", 10.811); elementMap.put("C", 12.0101); elementMap.put("N", 14.0067); elementMap.put("O", 15.9994); elementMap.put("F", 18.9984); elementMap.put("Ne", 20.1797); elementMap.put("Na", 22.9897); elementMap.put("Mg", 24.305); elementMap.put("Al", 26.9815); elementMap.put("Si", 28.0855); elementMap.put("P", 30.9738); elementMap.put("S", 32.065); elementMap.put("Cl", 35.453); elementMap.put("K", 39.0983); elementMap.put("Ar", 39.948); elementMap.put("Ca", 40.078); elementMap.put("Sc", 44.9559); elementMap.put("Ti", 47.867); elementMap.put("V", 50.9415); elementMap.put("Cr", 51.9961); elementMap.put("Mn", 54.938); elementMap.put("Fe", 55.845); elementMap.put("Ni", 58.6934); elementMap.put("Co", 58.9332); elementMap.put("Cu", 63.546); elementMap.put("Zn", 65.39); elementMap.put("Ga", 69.723); elementMap.put("Ge", 72.64); elementMap.put("As", 74.9216); elementMap.put("Se", 78.96); elementMap.put("Br", 79.904); elementMap.put("Kr", 83.8); elementMap.put("Rb", 85.4678); elementMap.put("Sr", 87.62); elementMap.put("Y", 88.9059); elementMap.put("Zr", 91.224); elementMap.put("Nb", 92.9064); elementMap.put("Mo", 95.94); elementMap.put("Tc", 98.00); elementMap.put("Ru", 101.07); elementMap.put("Rh", 102.9055); elementMap.put("Pd", 106.4); elementMap.put("Ag", 107.8682); elementMap.put("Cd", 112.411); elementMap.put("In", 114.818); elementMap.put("Sn", 118.71); elementMap.put("Sb", 121.76); elementMap.put("I", 126.9045); elementMap.put("Te", 127.6); elementMap.put("Xe", 131.293); elementMap.put("Cs", 132.9055); elementMap.put("Ba", 137.327); elementMap.put("La", 138.9055); elementMap.put("Ce", 140.116); elementMap.put("Pr", 140.9077); elementMap.put("Nd", 144.24); elementMap.put("Pm", 145.00); elementMap.put("Sm", 150.36); elementMap.put("Eu", 151.964); elementMap.put("Gd", 157.25); elementMap.put("Tb", 158.9253); elementMap.put("Dy", 162.5); elementMap.put("Ho", 164.9303); elementMap.put("Er", 167.259); elementMap.put("Tm", 168.9342); elementMap.put("Yb", 173.04); elementMap.put("Lu", 174.967); elementMap.put("Hf", 178.49); elementMap.put("Ta", 180.9479); elementMap.put("W", 183.84); elementMap.put("Re", 186.207); elementMap.put("Os", 190.23); elementMap.put("Ir", 192.217); elementMap.put("Pt", 195.078); elementMap.put("Au", 195.9665); elementMap.put("Hg", 200.59); elementMap.put("Ti", 204.3833); elementMap.put("Pb", 207.2); elementMap.put("Bi", 208.9804); elementMap.put("Po", 209.00); elementMap.put("At", 210.00); elementMap.put("Rn", 222.00); elementMap.put("Fr", 223.00); elementMap.put("Ra", 226.00); elementMap.put("Ac", 227.00); elementMap.put("Pa", 231.0359); elementMap.put("Th", 232.0381); elementMap.put("Np", 237.00); elementMap.put("U", 238.0289); elementMap.put("Am", 243.00); elementMap.put("Pu", 244.00); elementMap.put("Cm", 247.00); elementMap.put("Bk", 247.00); elementMap.put("Cf", 251.00); elementMap.put("Es", 252.00); elementMap.put("Fm", 257.00); elementMap.put("Md", 258.00); elementMap.put("No", 259.00); elementMap.put("Rf", 261.00); elementMap.put("Lr", 262.00); elementMap.put("Db", 262.00); elementMap.put("Bh", 264.00); elementMap.put("Sg", 266.00); elementMap.put("Mt", 268.00); elementMap.put("Rg", 272.00); elementMap.put("Hs", 277.00); elementMap.put("Ds", 281.00); elementMap.put("Cn", 285.00); elementMap.put("Nh", 286.00); elementMap.put("Fl", 289.00); elementMap.put("Mc", 289.00); elementMap.put("Lv", 293.00); elementMap.put("Ts", 294.00); elementMap.put("Og", 294.00); } public static String balanceFormula(String formula, double molecularWeight) { Map<String, Integer> elementCounts = countElements(formula); double totalCalculatedWeight = calculateMolecularWeight(elementCounts); double multiplier = molecularWeight / totalCalculatedWeight; StringBuilder balancedFormula = new StringBuilder(); for (Map.Entry<String, Integer> entry : elementCounts.entrySet()) { balancedFormula.append(entry.getKey()); if (entry.getValue() > 1) { balancedFormula.append(String.format("%d", (int) Math.round(entry.getValue() * multiplier))); } } return balancedFormula.toString(); } private static Map<String, Integer> countElements(String formula) { Map<String, Integer> elementCounts = new HashMap<>(); Matcher matcher = elementPattern.matcher(formula); while (matcher.find()) { String element = matcher.group(); elementCounts.put(element, elementCounts.getOrDefault(element, 0) + 1); } return elementCounts; } private static double calculateMolecularWeight(Map<String, Integer> elementCounts) { double totalWeight = 0.0; for (Map.Entry<String, Integer> entry : elementCounts.entrySet()) { totalWeight += elementMap.get(entry.getKey()) * entry.getValue(); } return totalWeight; } //public static void main(String[] args) { //String formula = "C6H12O6"; //double molecularWeight = 180.156; //String balancedFormula = balanceFormula(formula, molecularWeight); //System.out.println("Balanced formula: " + balancedFormula); //} public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter the chemical formula: "); String formula = scanner.nextLine(); double molecularWeight = calculateMolecularWeight(countElements(formula)); String balancedFormula = balanceFormula(formula, molecularWeight); System.out.println("Molecular weight: " + molecularWeight); scanner.close(); } }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue