public int calculate(String expr) { numbers.clear(); operators.clear(); expr = expr.replaceAll("\\s+", ""); System.out.println(expr); String[] parts = expr.split("((?=(\\+|\\-|\\*|\\/|\\(|\\)))|(?<=(\\+|\\-|\\*|\\/|\\(|\\))))"); for (String part : parts) { System.out.print("[" + part + "]"); } for (String part : parts) { if (part.length() == 0) { continue; } put(part); } while (operators.size() > 0) { reduce(); } return numbers.get(0); }