2014-02-21 95 views
0

我對數據可視化工作,所以我用這個代碼 -處理 - NullPointerException異常將字符串轉換爲float

//for importing csv files into a 2d array 
//by che-wei wang 

String lines[] = loadStrings("food.csv"); 
String [][] csv; 
int csvWidth=0; 

//calculate max width of csv file 
for (int i=0; i < lines.length; i++) { 
    String [] chars=split(lines[i],','); 
    if (chars.length>csvWidth){ 
    csvWidth=chars.length; 
    } 
} 

//create csv array based on # of rows and columns in csv file 
csv = new String [lines.length][csvWidth]; 

//parse values into 2d array 
for (int i=0; i < lines.length; i++) { 
    String [] temp = new String [lines.length]; 
    temp= split(lines[i], ','); 
    for (int j=0; j < temp.length; j++){ 
    csv[i][j]=temp[j]; 
    } 
} 

,在所有的偉大工程,但帶來了帶來的數據從CSV文件線作爲字符串。加工有一個簡單的浮動(串)轉換,但我發現此轉換的代碼NullPointerException異常:

String[] timeString = csv[2]; 
float timeFloat[] = float(timeString); 
+0

試着看[this](http://docs.oracle.com/javase/7/docs/api/java/lang/Float.html#parseFloat%28java.lang.String%29)。 – AntonH

+0

那麼,哪個指針是空的?你有沒有調試它來弄清楚? –

+0

你在哪裏定義'float()'? –

回答

0

你所得到的「空指針異常',因爲你沒有指定你想要存儲什麼'timeString'元素,以及你想要存儲什麼'timeFloat'元素。你可以通過使用for循環來解決這個問題。例如:

for (int i = 0; i < timeString.length; i++) { 
     timeFloat[i] = Float.(timeString[i]); 
    } 

這通過在「timeFloat」的對應元件的所有值「TIMESTRING,」並且將它們存儲循環迭代;例如,'timeString'的元素之一將被存儲在'timeFloat'的元素之一中。

+0

當我這樣做時它說:「本地變量timeFloat可能尚未初始化」 – jessemac

+0

@jessemac這是因爲你還沒有初始化你的數組,像'timeString'數組。示例: float [] timeFloat = new float [timeString.length]; 將此行放在for循環之前。 – JamesFrost

+0

就是這樣!非常感謝。我無法弄清楚我應該如何初始化它。 – jessemac

0

做這樣將字符串轉換爲浮動

float f = Float.parseFloat(timestring); 
+0

根據我的文獻可知,parseFloat函數對Processing中的數組不起作用,但使用float(string [])函數應該可行。我只是繼續在 「float timeFloat [] = float(timeString);」 – jessemac

+0

@jessemac然後檢查數組'timestring'是否爲null。 –

+0

我想這是我不瞭解的部分。什麼會使時間字符串空?當我註釋掉我的轉換線和println(timestring)時;沒有問題。也許我只是不明白null是什麼意思。 – jessemac

相關問題