【发布时间】:2011-07-18 20:34:48
【问题描述】:
我有一个非常奇怪的问题,同时尝试在 Eclipse 上为 android 开发
我的程序总是返回无意义的语句,所以我尝试调试它。
现在我明白问题是什么了...... ...代码的行为简直是疯狂 - 这绝对不合逻辑
这是我的代码:
ArrayList<String[]> formatedVerses = readAndSplitDatabaseFile(database, books);
if (formatedVerses.size() < 1) { // check if readAndSplitDatabaseFile worked
createDatabase(database, false); // if not. the database wasnt initialized
formatedVerses = readAndSplitDatabaseFile(database, books); // try again
}
return formatedVerses;
基本上我创建了这个 ArrayList
但是当我调试的时候,它不只是从上到下遍历代码,它会产生奇怪的不合逻辑的跳转
调试器到达行:
ArrayList<String[]> formatedVerses = readAndSplitDatabaseFile(database, books);
然后跳转到 if 语句(到目前为止一切顺利)
if (formatedVerses.size() < 1) {
但是 "formatedVerses.size()
但调试器不仅跳转到 if 块,而且实际上跳转到块的第二行:
formatedVerses = readAndSplitDatabaseFile(database, books);
这毫无意义。
我觉得有人在跟我开玩笑。
我就是想不通这个.....
我也尝试过重构代码... 但它只会变得更奇怪。
我也尝试过其他实现。比如这样:
if (formatedVerses.size() < 1) {
return array1;
} else{
doSomethingElse();
return array2;
}
在这种情况下,它会跳转到 if 块的真语句
return array1;
然后,当我单击下一步时,它实际上从该行跳转到
return array2 位于 else-block 内,而完全省略了 doSomethingElse()-line
有人有什么想法吗? 因为我现在快疯了……
【问题讨论】:
-
除了您遇到的问题;如果不是在第一次运行中,为什么数据库会在一个微秒后被初始化?你会使用一段时间,但 - 甚至更好 - 更好的设计模式