2014-02-21 3 views
0

Я работаю на визуализатор данных, так что я везу в данных из файла CSV с помощью этого code-Processing - NullPointerException преобразования строки плавать

//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]; 
    } 
} 

Это прекрасно работает, но приносит во всех строки как строки. Обработка имеет простой поплавок (строка) преобразование, но я получаю NullPointerException на этом преобразования кода:

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

Попробуйте взглянуть на [это] (http://docs.oracle.com/javase/7/docs/api/java/lang/Float.html#parseFloat%28java.lang.String%29). – AntonH

+0

Итак, какой указатель имеет значение null? Вы отлаживали его, чтобы понять это? –

+0

И где вы определяете 'float()'? –

ответ

0

Вы получаете «NullPointerException ', потому что вы не указываете, какой элемент «timeString» вы хотите сохранить, и какой элемент «timeFloat» вы хотите сохранить в нем. Вы можете решить это, используя цикл for. Пример:

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

Это для итерации цикла через все значения «» TimeString, и сохраняет их в соответствующем элементе «timeFloat»; например, элемент один из «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 не работает для массивов в обработке, насколько я могу судить по их литературе, но использование функции float (string []) должно работать. Я просто продолжаю получать исключение NullPointerException на "float timeFloat [] = float (timeString);" – jessemac

+0

@jessemac Затем проверьте, является ли массив 'timestring' нулевым или нет. –

+0

Я думаю, это та часть, которую я не понимаю. Что сделает timestring null? Когда я прокомментирую свою линию конверсии и просто println (timestring); проблем нет. Возможно, я просто не понимаю, что означает нуль. – jessemac

Смежные вопросы