@Delor: wymodziłem taką klasę Calc.
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.function.BinaryOperator;
public class Calc {
String[] tokens;
HashMap<String, BinaryOperator<Double>> operators = new HashMap<>();
public String doCalc(String cmd) {
operators.put("+", (a,b) -> a + b);
operators.put("-", (a, b) -> a - b);
operators.put("*", (a, b) -> a * b);
operators.put("/", (a, b) -> a / b);
try {
tokens = cmd.split("\\s+");
Double a = Double.parseDouble(tokens[0]);
Double b = Double.parseDouble(tokens[2]);
String op = tokens[1];
double result = doOperation(a, b, op);
String string = Double.toString(result);
return string;
} catch (Exception e) {
return "Invalid command to calc";
}
}
public double doOperation(Double a, Double b, String op) {
return operators.get(op).apply(a, b);
}
}
Nie mam pojęcia jak użyć String.join(" ", args). W moim przykładzie sczytuje tylko jedną wartość. Dla argumentów w cmd 20 + 3 tylko 20.