X-Git-Url: http://git.sourceforge.jp/view?p=chemicraft%2Fchemicraft.git;a=blobdiff_plain;f=common%2Fpcc%2Fchemicraft%2Futil%2FFormula.java;h=e145ecf363866a9570feaef5c81941297e481921;hp=f9e75b513f06badaff8a2a8bb765846dab61991c;hb=e487b5d18c213783e857ccaf2261bb3d21768ad6;hpb=ba6d39ec00e47503863833ea41920bb7d0484089 diff --git a/common/pcc/chemicraft/util/Formula.java b/common/pcc/chemicraft/util/Formula.java index f9e75b5..e145ecf 100644 --- a/common/pcc/chemicraft/util/Formula.java +++ b/common/pcc/chemicraft/util/Formula.java @@ -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); } }