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"。
数据库只有一列,名为 'voltages',有 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 = new Number[voltages.size()];
我正在尝试创建一个应用程序,它从使用 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"。 数据库只有一列,名为 'voltages',有 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 = new Number[voltages.size()];