堆栈推送问题双和字符

时间:2014-02-28 23:59:11

标签: java stack

我已经被困在这个Stack问题上了好几天了。我得到另外一件事,但是我差不多完成了!我现在遇到的问题是我得到一个计算工作但是当我尝试弹出下一个项目时,现在是一个双重的,我得到一个错误......

Exception in thread "main" java.lang.NullPointerException at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1008) at java.lang.Double.parseDouble(Double.java:540) at NodeStack.postFix(NodeStack.java:207)

我做了一些研究和调试,似乎当我弹出当前项目时,现在是一个双重而不是一个字符,我得到空指针...这是有道理的。我遇到的问题是如何处理它。这只是一个正在发生的事情的片段。我不确定我能做什么。

        if(ch=='+'){
            E one=(E) myStack.pop();
            E two=(E) myStack.pop();

            String first=numbers.get(one);
            String second=numbers.get(two);

            double temp=Double.parseDouble(first)+Double.parseDouble(second);

            myStack.push(temp);
        }

我是否应该在那里的某处添加if / else语句来处理它是否是一个字符或数字,如果是这样的话我将如何去做呢?我希望我对这个特定问题足够详细。

1 个答案:

答案 0 :(得分:0)

String变量first或second可能都是null。

以下是Double.parseDouble的文档:link

 public static double parseDouble(String s)
                      throws NumberFormatException

 Throws:
 NullPointerException - if the string is null
 NumberFormatException - if the string does not contain a parsable double.