私は問題をできるだけ簡略化しました。 リテラルな数式を含む文字列を与えられた場合、マップから値を取る数値に文字を変換して同じ式を取得したいと考えています。 皆さんからの助けを借りて私のコードの下に掲載しました。私が欲しいものマップから数値でリテラル式を変換する
public class Prova {
public static void main(String[] argv) {
//mathematical expression
String expr = "(a*b)+(b/a)"; //(15*60)+(60/15)
//Map of numeric values
HashMap<String, Double> itemval = new HashMap();
itemval.put("a", 15.0);
itemval.put("b", 60.0);
System.out.println("itemval: " + itemval);
System.out.println("expr: " + expr);
//convert literal expression numerically
char[] nc = expr.toCharArray();
for (int t = 0; t < nc.length; t++) {
char pippo = nc[t];
for (String key : itemval.keySet()) {
if (key.equals(pippo)) {
System.out.println("pippo: " + itemval.get(key));
}
}
System.out.print(nc[t]);
}
}
}
は、事前に 感謝(15 * 60)+(15分の60)のような出力を得ることです...
あなたが「」常に単一の文字になり、他の場所()*のBAB(のようなので、なしのもの)に表示されません、単にString.replaceAllを(使用していることを確認している場合) – Nadir
これはあなたを助けるかもしれません: 'http:// stackoverflow.com/questions/7258538/free-java-library-for-evaluating-math-expressions' – Kartic