设备中的NumberFormatException但不在模拟器中

时间:2012-09-10 09:46:36

标签: android android-emulator numberformatexception

我在模拟器中运行我的应用程序,一切正常,但当我在我的设备(华为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] =新的GraphViewData(i,Double.parseDouble(aux [i])); 好吧,你会认为aux [i]会有一个不正确的格式来解析为double但是所有的数字都是这样的:70.5或者像这样84 所以我不知道为什么它只在真实设备中而不是在模拟器中提供异常。

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

2 个答案:

答案 0 :(得分:0)

我是由不同的语言环境引起的,它指定的小数分隔符与您使用的不同(通常需要,并使用.)。只需将,替换为.之前的通话parseDouble(),您就可以了。

答案 1 :(得分: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();
}

这对我有用