簡體   English   中英

數組索引超出Android Studio中的范圍

[英]Array index out of bounds in Android Studio

我正在嘗試創建一個應用程序,該應用程序使用SQLite創建並使用AndroidPlot繪制數據庫中的值。 在MainActivity.java中造成麻煩的部分如下:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    DatabaseAccess databaseAccess = DatabaseAccess.getInstance(this);

    databaseAccess.open();
    List<String> voltages = databaseAccess.getQuotes();
    databaseAccess.close();

    Number[] seriesNumbers = {};
    for(i = 0; i < voltages.size(); i++){
        seriesNumbers[i] = Integer.parseInt(voltages.get(i));
    }
}

生成代碼時沒有錯誤。 但是,在模擬器上運行時,它指出“ java.lang.ArrayIndexOutOfBoundsException:length = 0; index = 0”。 該數據庫有一列名為“電壓”的列,其中有10個條目。 DatabaseAccess.java代碼如下所示:

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
import java.util.List;

public class DatabaseAccess {
private SQLiteOpenHelper openHelper;
private SQLiteDatabase database;
private static DatabaseAccess instance;

/**
 * Private constructor to aboid object creation from outside classes.
 *
 * @param context
 */
private DatabaseAccess(Context context) {
    this.openHelper = new DatabaseOpenHelper(context);
}

/**
 * Return a singleton instance of DatabaseAccess.
 *
 * @param context the Context
 * @return the instance of DabaseAccess
 */
public static DatabaseAccess getInstance(Context context) {
    if (instance == null) {
        instance = new DatabaseAccess(context);
    }
    return instance;
}

/**
 * Open the database connection.
 */
public void open() {
    this.database = openHelper.getWritableDatabase();
}

/**
 * Close the database connection.
 */
public void close() {
    if (database != null) {
        this.database.close();
    }
}

/**
 * Read all quotes from the database.
 *
 * @return a List of quotes
 */
public List<String> getQuotes() {
    List<String> list = new ArrayList<>();
    Cursor cursor = database.rawQuery("select * from voltages", null);
    cursor.moveToFirst();
        while (!cursor.isAfterLast()) {
            list.add(cursor.getString(0));
            cursor.moveToNext();
        }
        cursor.close();
        return list;
    }
}

錯誤發生在Number[] seriesNumbers = {};的聲明中Number[] seriesNumbers = {};

您必須給它一個尺寸。

Number[] seriesNumbers = new Number[voltages.size()];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM