2012-04-29 2 views
1

Я написал код, который должен позволить мне получить все данные под столбцом в базе данных и сохранить их в массиве строк. Я преобразую строковый массив, содержащий информацию, в двойной массив. Все значения в двойном массиве добавляются вместе, чтобы получить одно общее значение, и это значение затем отображается в EditText. Однако всякий раз, когда я запускаю действие, появляется ошибка, указывающая java.lang.NullPointerException.java.lang.NullPointerException ошибка при использовании массивов

Это код для массивов:

DatabaseTotalEntries getAllData = new DatabaseTotalEntries(this); //Creates a new method in the database class 
    getAllData.open(); 
    String[] RunningCosts = getAllData.getCost(); //Transfers all the data under the Total Running Costs column into a String Array 
    String[] RunningTimes = getAllData.getTime(); 
    String[] EnergyUsages = getAllData.getEnergy(); 
    getAllData.close(); 

    double[] doubleRunningCosts = new double[RunningCosts.length]; 
    for(int i=0; i<RunningCosts.length; i++) 
    { 
     doubleRunningCosts[i] = Double.parseDouble(RunningCosts[i]); 
    } // Converts the string array 'RunningCosts' into a double array 

    double TotalCost = 0; 
    for (int in = 0; in <doubleRunningCosts.length; in++) 
     TotalCost += doubleRunningCosts[in]; //Adds the values in the double string array together to get one total value 

    DecimalFormat decf = new DecimalFormat("##"); 
    totalCostBox.setText(decf.format(TotalCost)); //Sets the variable 'TotalCost' to appear in the totalCostBox edit text 

LogCat говорит инцидент произошел на линии 31, которая

double[] doubleRunningCosts = new double[RunningCosts.length]; 

Это метод GetData я использую в моей базе данных:

public String[] getCost() { 
    // TODO Auto-generated method stub 
    ArrayList<String> costarraylist = new ArrayList<String>(); 
    String[] applianceCostcolumns = new String[] { KEY_TOTAL_COST }; 
    Cursor costcursor = allDatabase.query(DATABASE_TABLE, applianceCostcolumns, null, null, null, null, null); 
    String result; 

    int iApplianceCost = costcursor.getColumnIndex(KEY_TOTAL_COST); 

    for (costcursor.moveToFirst(); !costcursor.isAfterLast(); costcursor 
      .moveToNext()) { 

     result = costcursor.getString(iApplianceCost); 

     costarraylist.add(result); 
    }; 
    return null; 
} 

Кто-нибудь знает, в чем проблема? Спасибо

+2

Я хотел бы предложить пошагового это в отладчике. –

+0

Поскольку у вас есть линия, бросающая NullPointer, просто посмотрите на строку и попытайтесь понять, какая часть этой строки может предполагать существующий объект (большой намек - вызов метода на объекте предполагает, что объект есть и будет вызывать нулевой указатель, если это не так). –

ответ

3

Изменить

return null; 

в

return costarraylist.toArray(new String[costarraylist.size()]); 

на последней строке метода getCost().

+0

Ahh да, кажется, это очень просто сейчас, спасибо всем за вашу помощь, и все вы были spot om – Sketzii

1

Функция-член public String[] getCost() возвращает значение null, а не фактическую стоимость. Следовательно, double[] doubleRunningCosts = new double[RunningCosts.length]; в строке 31 не будет работать, поскольку RunningCosts имеет значение NULL.

1

Ваш метод getCost возвращается null, когда оно должно быть что-то вроде возвращения costarraylist.toArray(new String[0])