JAVA中的强制转换问题

th3*_*ing 1 java double stack casting

我无法从字符串转换为char然后转换为double.我正在尝试计算一个简单的表达式1 + 2,但是当我从堆栈中将其分别从50.0和49.0中弹出时.然后加到99.0.我的代码如下.

表达式为'1 + 2'

public static double calculate (String expression){
        Stack<Character> calc = new Stack();
        expression.replaceAll("\\s+","") ;
        double result = 0;

        for(int i = 0; i < expression.length(); i++){
            calc.push((char) expression.charAt(i));
        }

        double one = (double) calc.pop();
        char expr = calc.pop();
        double two = (double) calc.pop();


        if(expr == '-'){
            result = one - (1*two);
        } else if (expr == '+'){
            result = one + (1*two);
        }

        System.out.println(result);
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

sst*_*tan 7

问题是,当你直接施放到这样的数字时

(double) calc.pop();
Run Code Online (Sandbox Code Playgroud)

...你实际上得到了字符(ascii )和(ascii )的ascii值. '1'49'2'50

你需要解析角色.这样的东西会起作用:

Double.parseDouble(calc.pop().toString());
Run Code Online (Sandbox Code Playgroud)