2011-11-02 70 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())。