Ejemplo n.º 1
0
 public void putOperator(String op) {
   while (operators.size() > 0
       && precedence(operators.get(operators.size() - 1)) >= precedence(op)) {
     reduce();
   }
   operators.add(op);
 }
Ejemplo n.º 2
0
 public void put(String elem) {
   if (elem.equals("(")) {
     operators.add(elem);
   } else if (elem.equals(")")) {
     while (!operators.get(operators.size() - 1).equals("(")) {
       reduce();
     }
     operators.remove(operators.size() - 1);
   } else if (elem.matches("\\d+")) {
     putNumber(elem);
   } else {
     putOperator(elem);
   }
 }
Ejemplo n.º 3
0
  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);
  }