2011-11-02 72 views
0

像「1 + 23」工作在Java計算器和取值作爲字符串

解析加倍例如..然後計算..

但是當我有一個小數的程序崩潰例如 「1.1 + 2」 上的1.1程序毛刺當我解析它

if(s.contains("+")) 

    { 
     int n = s.indexOf("+"); 




     String w1 = s.substring(0,n); 

     String w2 = s.substring(n+1,s.length()); 

     part1= (long) Double.parseDouble(w1); 
     part2 = (long)Double.parseDouble(w2); 

在異常線程 「AWT-EventQueue的-0」 java.lang.NumberFormatException:對於輸入字符串: 「1.1」 在java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

+1

你應該首先給我們提供一些代碼 –

+4

幫助你,我們需要至少一個代碼示例和異常的堆棧跟蹤。崩潰可能是由一百萬件事引起的。 – Peter

+0

你沒有提供足夠的信息。它如何「小故障」?堆棧跟蹤在哪裏?你的代碼是什麼樣的? –

回答

0

你爲什麼要從雙倍長到多長?這會導致你的號碼被截斷。在1.1的情況下,您將得到1.您應該做的是使用以下內容:

Float.parseFloat(w1); 

其中w1是您的浮點值。

由於long值不能包含浮點,所以不能將part1設置爲long值。 part1必須是一個浮點數。

2

可能是使用Integer.parseInt()。如果這是不是的情況下,那麼你需要指定很多更多詳細信息(如何它崩潰,發佈堆棧跟蹤,發佈代碼)。

你需要切換到要麼浮點數(Double.parseDouble()BigDecimalnew BigDecimal())。