2017-03-08 257 views
-2

嗨,我有一串數字,並希望把它們放入一個浮點數組,所以我可以訪問這些值。將字符串傳遞給float數組?

// this bit works fine, data is split into string array. 
String fdata[] = data.split(","); 
Float array_f[] = new Float(fdata.length); 

// this is the bit which throws an error and causes my app to crash. 
for (int i = 0; i < fdata.length; i++){ 
    float y = Float.parseFloat(fdata[i]); 
    array_f[i] = y; 
} 

該錯誤是一個

的java的NullPointerException:嘗試調用上的空對象 參考虛擬方法 java.lang.String中java.lang.split(java.lang.String中)。

感謝

加入到這個我想我需要解釋一點,所以我提供了更多的代碼來顯示什麼即時試圖做的。

String data; //does this need to define the number of bytes needed then? 

start_Acq.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    channel_a = String.valueOf(channel_Acq.getSelectedItem()); 
    Thread thread = new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       connection.start_acquisition(channel_a); 
       data = connection.start_acquisition(channel_a); 
       connection.stop_acquisition(); 
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
     } 
    });thread.start(); 

    data_recived.setText(data); 
    String fdata[] = data.split(","); 
    Float array_f[] = new Float[fdata.length]; 

    for(int i = 0; i<fdata.length; i++){ 
     float y = Float.parseFloat(fdata[i]); 
     array_f[i] = y; 
    } 

} 
}); 
+1

數據爲空,你需要檢查爲什麼....你只是不能分割一個空字符串:) –

+0

在第一行,你的'數據'爲空。 –

+4

可能的重複[什麼是NullPointerException,以及如何解決它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it ) –

回答

1

首先data爲空;解決這個問題,並通過這個

float y = java.lang.Float.parseFloat(fdata[i]); 
1

試試你的數組初始化是錯誤的,它應該像

Float array_f[] = new Float[fdata.length]; 
長度後

你應該有一個分號不「」

for (int i=0; i<fdata.length;i++){ 

編輯 試試這個會有效

String fdata[] = new String[]{"6.5", "8.5"};   //this bit works fine, data is split into string array. 
     Float array_f[] = new Float[fdata.length]; 
     for (int i = 0; i < fdata.length; i++) {   //this is the bit which throws an error and causes my app to crash. 
      float y = Float.parseFloat(fdata[i]); 
      array_f[i] = y; 
     } 
     System.out.println(Arrays.asList(array_f)); 
0

使用本 GET字符串數組,字符串,然後轉換成浮動

for(int i=0;stringarray.length>i;i++){float_var = Float.valueOf(string_array.get(i)); float_array.add(float_var);} 

然後加浮動數組

2

與您的代碼的問題是初始化時,所有你需要做的是使用原始的float而不是Float:

String data = "123,5468,1,25,36"; 
    String fdata[] = data.split(","); 
    float array_f[] = new float[fdata.length]; 
    for (int i = 0; i < fdata.length; i++){ 
     array_f[i] = Float.parseFloat(fdata[i]); 
System.out.println(array_f[i]); 
} 
+0

@llyasse我只是混淆了我自己,我想,我還在學習。我已經更新了我的問題,但是用我的全局變量數據說,當初始化時,我必須爲它接收數據時分配一定的空間量來定義它。因爲它需要存儲32 x 16384字節。 – RedP

+0

不,你不必指定空間的數量,但你需要確保數據存儲在你的「數據」變量中,因爲錯誤表明你試圖對空對象進行拆分! – Ilyasse

+0

@llyasse我認爲問題在於程序正在快速完成之前的工作,例如它試圖在數據變量從數據採集中獲取數據變量的同時分割數據變量。當添加斷點並一次採取一步時,它可以正常工作。任何建議 – RedP