我在尝试在 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() < 1”是错误的,所以它应该跳过 if block
但调试器不仅跳入 if block ,而且实际上跳入 block 的第二行:
formatedVerses = readAndSplitDatabaseFile(database, books);
这毫无意义。
我觉得有人在跟我开玩笑。
我就是想不通这个......
我也试过重构代码... 但它只会变得更奇怪。
我也尝试过其他实现。例如像这样:
if (formatedVerses.size() < 1) {
return array1;
} else{
doSomethingElse();
return array2;
}
在这种情况下,它会跳转到 if block 的 true 语句
return array1;
然后,当我点击下一步时,它实际上从那一行跳到
else block 内的 return array2
行,同时完全省略 doSomethingElse()
行
有人有什么想法吗? 因为我现在要疯了...
最佳答案
通常当我看到这样的行为时,是因为我没有运行我认为我正在运行的代码。我没有做过Android开发,所以我不能具体说,但是你是否勾选了项目菜单下的“自动构建”?我发现这可以大大减少我看到这种行为的次数。
您是否尝试过清理代码并进行完整的重建?您是在 Eclipse 之外还是在远程设备上运行它?如果在远程设备上,您是否已将代码发布到该设备?
正如我所说,我没有做过任何 Android 开发,所以从 Andriod 开发的角度来看,其中一些问题似乎是显而易见的。
希望这些想法有所帮助。
关于Android:代码行为疯狂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6739078/