2014-04-03 43 views
-1

我的目標是採取一系列流媒體的數字,並把它變成一個多維數組。我意識到這可以在非多維數組中完成,但我的目標是最終擴展列的數量。但是,我得到一個錯誤NumberFormatException,我相信它來自parseDouble。有人能解釋我的錯誤嗎?NumberFormatException的()

請看到logcat的錯誤下面的代碼。謝謝。

添加了log.d( 「」,readMessage,NULL);

這是我log.d.的段空白點是空的嗎?

04-04 21:19:33.196: D/(13272): 0.03 
04-04 21:19:33.196: D/(13272): 0. 

04-04 21:19:33.196: D/(13272): 
04-04 21:19:33.196: D/(13272): 0.03 
04-04 21:19:33.196: D/(13272): 0. 

04-04 21:19:33.196: D/(13272): 
04-04 21:19:33.196: D/(13272): 0.03 
04-04 21:19:33.196: D/(13272): 0. 

04-04 21:19:33.196: D/(13272): 



     case MESSAGE_READ: 


       for(int a= 0; a <30000; a++) 
       { 
        byte[] readBuf = (byte[]) msg.obj; 
        String readMessage = new String(readBuf, 0, msg.arg1); 
        mConversationArrayAdapter.add("Voltage: "+ readMessage); 
        double[] convert = new double[1]; 
        for(int z=0; z <1;z++) 
        { 
        convert[z]= Double.parseDouble(readMessage); 
        } 
        for(int j=0; j<1;j++) 
        { 
        stored[a][j]= convert[a]; 
        } 
       } 

      break; 

logcat的

04-02 21:42:42.516: E/AndroidRuntime(10430): FATAL EXCEPTION: main 
04-02 21:42:42.516: E/AndroidRuntime(10430): java.lang.NumberFormatException: 
04-02 21:42:42.516: E/AndroidRuntime(10430): at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:267) 
04-02 21:42:42.516: E/AndroidRuntime(10430): at java.lang.Double.parseDouble(Double.java:318) 
04-02 21:42:42.516: E/AndroidRuntime(10430): at com.example.android.BluetoothChat.BluetoothChat$2.handleMessage(BluetoothChat.java:305) 
04-02 21:42:42.516: E/AndroidRuntime(10430): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-02 21:42:42.516: E/AndroidRuntime(10430): at android.os.Looper.loop(Looper.java:130) 
04-02 21:42:42.516: E/AndroidRuntime(10430): at android.app.ActivityThread.main(ActivityThread.java:3683) 
04-02 21:42:42.516: E/AndroidRuntime(10430): at java.lang.reflect.Method.invokeNative(Native Method) 
04-02 21:42:42.516: E/AndroidRuntime(10430): at java.lang.reflect.Method.invoke(Method.java:507) 
04-02 21:42:42.516: E/AndroidRuntime(10430): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
04-02 21:42:42.516: E/AndroidRuntime(10430): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
04-02 21:42:42.516: E/AndroidRuntime(10430): at dalvik.system.NativeStart.main(Native Method) 
+2

之前,這是因爲['readMessage'不是一個有效的雙(http://docs.oracle.com/javase/7/docs/ API/JAVA/LANG/Double.html#parseDouble(java.lang.String中))......所以你必須要麼告訴我們什麼'readMessage'是當它發生故障,或者增加一些臨時的日誌輸出進行監控。這不是真的與數組有關。 –

回答

1

readMessage變量應包含的內容僅數字, 「 - 」 符號或點,所以 「121」 或 「13.5」 或 「-5」。如果有其他符號的字符串,則會出現NumberFormatException。只是看到(由Log.d例如),什麼是readMessage變量分析

+0

它的確如此。它包含數字,如0.02,0.03,0.92,1.92。等 – user3385015

+0

但你確定有30000條消息。也許第一個是真正的雙倍,但在沒有更多的緩衝區之後,你在readMessage中有null,因此發生異常? – markubik

+0

嗯,我每次收到一條消息,大約每秒1000條。 (它來自我的arduino微控制器)。我將如何解決這個問題? – user3385015