2014-12-02 70 views
-2

我有一串湿度测量,没有空格,所以当我在Android应用程序上显示结果时,我得到这个:36.5036.5036.5036.2036.2036.2036.2036.10。 现在我想绘制湿度图,所以我需要拆分数字并将其保存到数组中。我需要这样的:如何拆分字符串并将其保存到数组

double[] temp= {36.50, 36.50, 36.50, 36.20, 36.20, 36.20, 36.10}; 

这是我尝试过,但它不工作(应用程序崩溃):

String parts[] = response.split("(?<=\\G.{5})"); 
double[] partsD = new double[parts.length]; 
for(int i = 0; i < parts.length; i++) 
{ 
    partsD[i] = Double.parseDouble(parts[i]); 
} 

我敢肯定,这个问题是在代码的一部分,因为我试图将它排除在外,并创建了具有想象温度的阵列,并且绘制得很好。

这里是日志猫:

12-02 12:08:52.484: E/AndroidRuntime(27004): FATAL EXCEPTION: main 
12-02 12:08:52.484: E/AndroidRuntime(27004): java.lang.RuntimeException: Unable to start activity  ComponentInfo{com.Graph/com.Graph.second}: java.lang.NumberFormatException: Invalid double:  "36.5036.5036.5036.2036.2036.2036.2036.1036.1036.1036.1036.1036.1036.1036.1036.1036.1036.1036.1036.10 " 
12-02 12:08:52.484: E/AndroidRuntime(27004): at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at  android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2357) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at android.app.ActivityThread.access$600(ActivityThread.java:153) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at android.os.Looper.loop(Looper.java:137) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at android.app.ActivityThread.main(ActivityThread.java:5226) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at java.lang.reflect.Method.invokeNative(Native Method) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at java.lang.reflect.Method.invoke(Method.java:511) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:112) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at dalvik.system.NativeStart.main(Native Method) 
12-02 12:08:52.484: E/AndroidRuntime(27004): Caused by: java.lang.NumberFormatException: Invalid double:  "36.5036.5036.5036.2036.2036.2036.2036.1036.1036.1036.1036.1036.1036.1036.1036.1036.1036.1036.1036.10" 
12-02 12:08:52.484: E/AndroidRuntime(27004): at java.lang.StringToReal.invalidReal(StringToReal.java:63) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at java.lang.StringToReal.parseDouble(StringToReal.java:269) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at java.lang.Double.parseDouble(Double.java:295) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at com.Graph.second.onCreate(second.java:49) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at android.app.Activity.performCreate(Activity.java:5104) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
12-02 12:08:52.484: E/AndroidRuntime(27004): at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261) 
12-02 12:08:52.484: E/AndroidRuntime(27004): ... 12 more 

感谢您的宝贵时间。

+0

http://stackoverflow.com/a/3481842/4116091 – 2014-12-02 11:13:37

+0

刚使用'response.split(“。”);'。 – greenapps 2014-12-02 11:18:24

+0

如果'response.equals(“36.5036.5036.5036.2036.2036.2036.2036.2036.10”)',你的正则表达式是错误的,所以'response'不是分割和'parts == {response}' – jhamon 2014-12-02 11:18:42

回答

1

此代码将查找由2个由2个点分隔的数字组成的模式。每个匹配都被转换为一个double并添加到一个数组中。

Pattern pattern= Pattern.compile("\\d{2}.\\d{2}"); 
Matcher matcher = pattern.matcher(response); 
if(matcher.matches(){ 
    double[] partsD = new double[parts.length]; 
    for(int i = 1; i < matcher.groupCount(); i++){ 
     partsD[i] = Double.parseDouble(matcher.group(i)); 
    } 
} 

你是接近于解决办法,但你没有拆分response字符串作为它的异常堆栈的陈述的:

12-02 12:08:52.484: E/AndroidRuntime(27004): Caused by: java.lang.NumberFormatException: Invalid double:  "36.5036.5036.5036.2036.2036.2036.2036.1036.1036.1036.1036.1036.1036.1036.1036.1036.1036.1036.1036.10" 
+0

谢谢jhamon。 – sinkoviak 2014-12-02 11:32:07

相关问题