【发布时间】:2015-05-22 20:23:25
【问题描述】:
我创建了一个从数据库读取数据并将其放入String 数组的方法。
Android Studio 没有给出语法错误,但是当我启动我的应用程序时,日志显示:
03-19 16:31:20.938 2518-2518/com.mms.dailypill E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.mms.dailypill, PID: 2518
java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at com.mms.dailypill.DBManager.getMedicines(DBManager.java:56)
方法代码为:
public String[] getMedicines()
{
SQLiteDatabase db = dbManager.getWritableDatabase();
String[] columns = {dbManager.getName(), dbManager.getFormat(), dbManager.getAmount(), dbManager.getExp_date(), dbManager.getTime()};
Cursor cursor = db.query(dbManager.getTableName(), columns, null, null, null, null, null);
String[] medicines = {};
String name, format, exp_date, time;
int amount;
int count = 0;
while(cursor.moveToNext())
{
name = cursor.getString(0);
format = cursor.getString(1);
amount = cursor.getInt(2);
exp_date = cursor.getString(3);
time = cursor.getString(4);
medicines[count] = "Name: " + name + " Format: " + format + " Amount: " + amount + " Expiration Date: " + exp_date + " Time: " + time;
count++;
}
db.close();
return medicines;
}
正如日志所说,第 56 行给出了异常:
time = cursor.getString(4);
我阅读的表格有 6 列:id、name、format、amount、exp_date、time。我只想显示没有id 列的整个表格,所以当我调用getString() 方法时,我从索引1 而不是0 开始。
我真的不明白问题出在哪里,所以如果有人可以帮助我,我将不胜感激。 提前致谢!
【问题讨论】:
-
String[] medicines = {};应该是String[] medicines = new String[cursor.getCount()];并且您可能想要检查负值 -
@Blackbelt 谢谢,它解决了我的问题!
-
@Blackbelt orb 那就是答案材料!不要那么害羞
-
@codeMagic orb 我一直在问自己为什么
-
@codeMagic 只是好奇.. 什么是“球体”?
标签: java android arrays exception indexoutofboundsexception