2014-02-21 97 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

相关问题