1

我在模拟器中运行我的应用程序,一切正常,但是当我在我的设备(华为 u8650)中运行它时,我得到 NumberFormatException:

GraphViewData[] aux2 = new GraphViewData[aux.length];
     for(int i=0;i<aux.length;i++)
     {
         System.out.println("reps "+Repetitions+", dato "+i+" = "+aux[i]);
         if(aux[i] != null)
         {
             try{
         aux2[i]= new GraphViewData(i, Double.parseDouble(aux[i]));
             }catch(Exception w)
         {
                 Toast.makeText(this, "num: "+aux[i], Toast.LENGTH_LONG).show();
                 Toast.makeText(this, w.getMessage(), Toast.LENGTH_LONG).show();
         }
         }
}

例外是: aux2[i]= new GraphViewData(i, Double.parseDouble(aux[i])); 好的,您会认为 aux[i] 解析为 double 的格式不正确,但都是这样的数字:70.5 或类似 84 所以我不知道为什么它只在真实设备中而不是在模拟器中给出该异常.

有什么建议么?提前致谢。

4

2 回答 2

0

I 是由不同的语言环境引起的,它指定了与您使用的不同的小数分隔符(通常它期望,并且您使用.)。只需,.之前的电话替换任何,parseDouble()你会没事的。

于 2012-09-10T09:49:23.823 回答
0

好的,答案是使用以下代码:

public double stringToDouble(String s) {

       NumberFormat nf = NumberFormat.getInstance(Locale.getDefault());
    nf.setGroupingUsed(false);
    ParsePosition parsePosition = new ParsePosition(0);
    Number n = nf.parse(s, parsePosition);
    if (n == null || parsePosition.getErrorIndex() >= 0 || parsePosition.getIndex() < s.length())
    {
      /* not a valid number */
    }
    return n.doubleValue();
}

这对我有用

于 2012-09-10T14:05:08.737 回答