public int Calculate2(string input) { input = input.Replace(" ", ""); for (int i = 0; i <= input.Length; i++) { if (i == input.Length || input [i] == '+' || input [i] == '-' || input [i] == '*' || input[i] == '/') { if (!stack.Empty() && (i == input.Length || input[i] == '*' || input[i] == '/') && (stack.Top() == '*' || stack.Top() == '/')) { char op = stack.Pop(); int val2 = result.Pop(); int val1 = result.Pop(); switch (op) { case '*': result.Push(val1 * val2); break; case '/': result.Push(val1 / val2); break; } } while (!stack.Empty() && (i == input.Length || input[i] == '+' || input[i] == '-')) { char op = stack.Pop(); int val2 = result.Pop(); int val1 = result.Pop(); switch (op) { case '+': result.Push(val1 + val2); break; case '-': result.Push(val1 - val2); break; case '*': result.Push(val1 * val2); break; case '/': result.Push(val1 / val2); break; } } if (i < input.Length) { stack.Push(input [i]); } } else { result.Push(ReadInteger(input, i, out i)); } } return(result.Pop()); }