Ich habe unten platziert mein Problem ist so einfach wie möglich. Angesichts einer Zeichenfolge, die einen mathematischen Literalausdruck enthält, möchte ich den gleichen Ausdruck erhalten, indem ich Buchstaben in Zahlen umwandle, die Werte aus einer Karte annehmen. Ich habe unter meinem Code für jede Hilfe von euch geschrieben.Konvertieren von literalen Ausdruck in numerischen Werten aus einer Karte
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]);
}
}
}
, was ich will, ist eine Ausgabe wie (15 * 60) zu bekommen + (60/15) Vielen Dank im Voraus ...
Wenn Sie sicher sind, dass „a“ wird immer einzelne Zeichen und wird nicht an anderen Orten (also keine Sache wie (a * bab)) erscheinen, verwenden Sie einfach String.replaceAll() – Nadir
Dies könnte Ihnen helfen: 'http: // stackoverflow.com/questions/7258538/free-java-library-for-evaluating-math-expressions' – Kartic