繁体   English   中英

JAVA中的投放问题

[英]Casting issue in JAVA

我在从字符串转换为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;
    }

问题是,当您直接转换为这样的数字时

(double) calc.pop();

...您实际上正在获取字符 '1' (ascii 49 )和'2' (ascii 50 )的ascii值。

您需要解析字符。 这样的事情会起作用:

Double.parseDouble(calc.pop().toString());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM