我需要知道这段代码有什么问题?
public String getLastDate(){
SQLiteDatabase database = lecturesDB.getReadableDatabase();
try {
String [] a = {DATE};
Cursor cursor = database.query(LECTURES_TABLE, a, null, null, null, null, null);
int i = cursor.getColumnIndex(DATE);
cursor.moveToFirst();
String ld = cursor.getString(i);//Thu, 26 Mar 2015 17:19:56
DateFormat format = new SimpleDateFormat("dd MMM yyyy hh:mm:ss ");
Date date = format.parse(ld.substring(5));
while (cursor.moveToNext()){
String c = cursor.getString(i);
if (format.parse(c.substring(5)).getTime()>date.getTime()){
date = format.parse(c.substring(5));
ld = c;
}
}
return ld;
}catch (Exception e) {
Log.e("Mayiaz",e.getMessage());return "";
}finally {
database.close();
}
}
返回""
,异常显示此消息:
"04-04 19:55:45.702 1478-1634/com.mine.rbt E/Mayiaz﹕ length=0; index=5"
为什么代码会抛出异常,我该如何解决呢?
答案 0 :(得分:0)
(我假设这发生在ld.substring(5)
行;如果它在c.substring(5)
行,请替换s/ld/c/g
。请清楚地指出发生异常的行<) / p>
您无法为String.substring(i)
i
调用大于字符串长度的ld.substring(5)
。如果ld
短于5个字符(在这种情况下,它是空的),则需要避免调用Math.min(5, ld.length())
。
例如,您可以使用format
。但请注意,这可能会导致抛出异常,因为{{1}}无法将字符串解析为日期。