Facebook | Phone | Perform string calculation as given below (see description)

I was given this problem in an interview, return the output of this String s = "4+8×2" , output = 20, Ex2: String s = "3×7-4", output = 17. This is my approach, but I am not able to get the expected result, please point out the correct way here. The output is not correct.

 public static int findResult (String s) {
        int i = 0;
        Stack<String> stack =  new Stack<>();
        while (i < s.length()) {
            if (s.charAt(i) == '+') {
                stack.push(String.valueOf(s.charAt(i)));
                i++;
            } else if (s.charAt(i) == '*') {
                stack.push(String.valueOf(s.charAt(i)));
                i++;
            } else if (s.charAt(i) == '-') {
                stack.push(String.valueOf(s.charAt(i)));
                i++;
            } else if (Character.isDigit(s.charAt(i))) {
                int num = s.charAt(i) - '0';
                while (i+1 < s.length() && Character.isDigit(s.charAt(i + 1))) {
                    num = num * 10 + s.charAt(++i) - '0';
                }
                stack.push(String.valueOf(num));
                i++;
            }
        }
        int current = 0;
        //second while loop
        while (!stack.isEmpty()) {
            int firstNumber = Integer.parseInt(stack.pop());
            if (stack.isEmpty()) return current;
            String sign = stack.pop(""
            //int firstNum = Integer.parseInt(stack.pop());
            if (sign.equals("*")) {
                current = firstNumber * Integer.parseInt(stack.pop());
                stack.push(String.valueOf(current));
            }
            else if (sign.equals("-")) {
                current = firstNumber;
                stack.push(String.valueOf(current));
            } else {
                current = firstNumber + Integer.parseInt(stack.pop());
                stack.push(String.valueOf(current));
            }
        }

        return Integer.parseInt(stack.pop());
    }
Comments (2)