就执行的内容而言,我看不到任何功能上的错误,但是我只是浪费了一个小时来证明我的代码,而编译器正在执行应有的操作。
考虑以下代码:
public int getAnswer(int a) {
int retval = 18;
int x = 25;
int y = 50;
while (a-- > 0) {
if (a == 3) {
retval = a;
return retval;
}
}
x = 10;
y = 20;
return 0;
}
用
int theAnswer = getAnswer(6);
return
在运行代码之前对包含和的两行进行断点处理,尝试预测结果,并因此预测将击中哪一行。
就像您从我的问题的语气中可以想象到的那样,错误的行被突出显示,但是返回正确的结果。如果您逐步执行代码,它会跳动很多。
是否可以进行其他配置以显示正确的行?(我使用的是最新的Android Studio,我很欣赏它可能不稳定,但是我敢肯定,不久前我在Eclipse上看到了类似的行为,但是我从来没有花时间跟踪它;也许这是Java的事情) 。
这是dx的问题,它是将Java .class文件转换为.dx文件以打包到Android的构建的一部分。根据这个:
https://code.google.com/p/android/issues/detail?id=34193
如果一个函数具有多个返回路径,则dx会将返回指令合并为一条返回指令,因此在调试期间,调试器无法确定返回属于哪条线,并且一切都会跳来跳去。这与我尝试重现您的问题时所看到的相对应:每次通过循环进行if (a == 3)
检查时,都会跳到return 0
末尾的,然后又跳回到循环中。您会看到最后一个return 0
与return retval
循环中间的合并。
我怀疑这个问题很快就会解决,因此您可能只需要学习忍受它即可。抱歉,我知道这有点疯狂。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句