堆栈推送问题双精度和字符



我已经在这个堆栈问题上停留了几天了。我得到一件事工作另一件事坏了,但我快完成了!我现在遇到的问题是我得到了一个计算工作,但是当我尝试弹出下一个项目(现在是双精度)时,我得到了一个错误......

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 语句来处理它是字符还是数字,如果是这种情况,我将如何去做?我希望我对这个特定问题足够详细。

可能第一个或第二个字符串变量为空。

这是 Double.parseDouble 的文档:链接

 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.

最新更新