2014-02-28 44 views
-1

我一直被困在這個Stack問題上幾天了。我得到一件事情,另一件事情打破了,但我差不多完成了!我快成現在的問題是,我得到的計算工作,但是當我嘗試並彈出下一個項目,現在是一個雙,我得到一個錯誤......堆棧推送問題Double和Character

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語句來處理它是否是一個字符或數字,如果是我會怎麼去這樣做的情況下?我希望我對這個問題有足夠的瞭解。

+0

你檢查first'的'價值觀和'秒'? –

+0

我懂了。現在有幾個邏輯錯誤^ – kevorski

回答

0

可能是第一個或第二個字符串變量爲空。

這裏是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.