Вот очень упрощенный ответ, не очень надежный, если данные не сформированы, как вы описали.
static Pattern pattern = Pattern.compile("([0-9]+)([+-/\\*])([0-9]+)");
public static int calculate(String arg) {
Matcher matcher = pattern.matcher(arg);
if (matcher.find()) {
int a = Integer.parseInt(matcher.group(1));
int b = Integer.parseInt(matcher.group(3));
String operator = matcher.group(2);
if ("+".equals(operator)) {
return a+b;
} else if ("-".equals(operator)) {
return a-b;
} else if ("/".equals(operator)) {
return a/b;
} else if ("*".equals(operator)) {
return a*b;
}
}
throw new IllegalArgumentException("Could not parse '" + arg + " '");
}
Он анализирует строку как три группы: сначала группу чисел, затем одну из (+, -, / или *), а затем другую группу чисел.