OSDN Git Service

修正・変更
[chemicraft/chemicraft.git] / common / pcc / chemicraft / util / Formula.java
index f9e75b5..e145ecf 100644 (file)
@@ -1,7 +1,6 @@
 package pcc.chemicraft.util;
 
 import java.util.ArrayList;
-import java.util.List;
 
 import pcc.chemicraft.ChemiCraftData;
 
@@ -31,62 +30,64 @@ public class Formula
        {
                char[] var2 = par1.toCharArray();
                String var3 = null;
-               int var4 = 1;
-               Formula var5 = null;
+               int var4 = 0;
+               int var5 = 1;
+               Formula var6 = null;
 
                for (int i = 0; i < var2.length; i++)
                {
                        if (Character.isLetter(var2[i])){
                                if (Character.isUpperCase(var2[i])){
+                                       if (var4 < 0){
+                                               var4 = 1;
+                                       }
                                        if (var3 != null)
                                        {
-                                               this.setAtom(var3,  var4);
-                                       } else if (var5 != null) {
-                                               this.setAtoms(var5.getAtoms(), var5.getAmonts(), var4);
-                                               var5 = null;
+                                               this.setAtom(var3,  var4 * var5);
+                                       } else if (var6 != null) {
+                                               this.setAtoms(var6.getAtoms(), var6.getAmonts(), var4 * var5);
+                                               var6 = null;
                                        }
                                        var3 = Character.toString(var2[i]);
                                } else {
                                        var3 = var3.concat(Character.toString(var2[i]));
                                }
+                               var4 = 0;
                        } else if (Character.isDigit(var2[i])) {
-                               if (var3 != null)
-                               {
-                                       this.setAtom(var3, var4 * Integer.valueOf(Character.toString(var2[i])));
-                               } else if (var5 != null) {
-                                       this.setAtoms(var5.getAtoms(), var5.getAmonts(), Integer.valueOf(Character.toString(var2[i])));
-                                       var5 = null;
+                               if (var3 != null || var6 != null) {
+                                       var4 = var4 * 10 + Integer.valueOf(Character.toString(var2[i]));
                                } else {
-                                       var4 = Integer.valueOf(Character.toString(var2[i]));
+                                       var5 = Integer.valueOf(Character.toString(var2[i]));
                                }
-                               var3 = null;
                        } else if (var2[i] == '・') {
                                if (var3 != null)
                                {
-                                       this.setAtom(var3,  var4);
-                               } else if (var5 != null) {
-                                       this.setAtoms(var5.getAtoms(), var5.getAmonts(), var4);
+                                       this.setAtom(var3,  var4 * var5);
+                               } else if (var6 != null) {
+                                       this.setAtoms(var6.getAtoms(), var6.getAmonts(), var4 * var5);
                                }
                                var3 = null;
-                               var4 = 1;
-                               var5 = null;
+                               var4 = 0;
+                               var5 = 1;
+                               var6 = null;
                        } else if (var2[i] == '(') {
                                if (var3 != null)
                                {
-                                       this.setAtom(var3,  var4);
+                                       this.setAtom(var3,  var4 * var5);
                                        var3 = null;
+                                       var4 = 1;
                                }
-                               int var6 = par1.indexOf(')');
-                               String var7 = par1.substring(i + 1, var6);
-                               var5 = new Formula(var7);
-                               i = var6;
+                               int var7 = par1.indexOf(')');
+                               String var8 = par1.substring(i + 1, var7);
+                               var6 = new Formula(var8);
+                               i = var7;
                        } else {
                                throw new IllegalArgumentException();
                        }
                }
                if (var3 != null)
                {
-                       this.setAtom(var3,  var4);
+                       this.setAtom(var3,  var4 * var5);
                }
        }