Android Studio中的Java代码未命中IF或ELSE
我正在运行androidstudio并设置断点,但在IF…ELSE两种情况下,代码都没有被执行。在我看来,这样的事情是不可能的。IF或ELSE应该为true。。。对吧? 代码如下:Android Studio中的Java代码未命中IF或ELSE,java,android,android-studio,Java,Android,Android Studio,我正在运行androidstudio并设置断点,但在IF…ELSE两种情况下,代码都没有被执行。在我看来,这样的事情是不可能的。IF或ELSE应该为true。。。对吧? 代码如下: if (lastReading.isItTimeYet(Calendar.getInstance())) { lastReadingReturn = lastReading.SensorReadingChanges(z_value, chkOrient, incl
if (lastReading.isItTimeYet(Calendar.getInstance()))
{
lastReadingReturn = lastReading.SensorReadingChanges(z_value, chkOrient, inclination, rotation);
if (lastReadingReturn.isEmpty())
{
String EMPTY = "TRUE";
// DO NOTHING
}
else
{
int stopHERE = 0;
}
}
lastReadingReturn是一个字符串。它从SensorReadingChanges中获得的值很好。我没有看到任何错误被抛出
我在字符串EMPTY=“TRUE”上都加了断点代码>行和int stopHERE=0代码>行,但两者都未命中。我可以在国际单项体育联合会召开之前在线上停下来。但当我尝试跨入或跨过下一行时,调试器跳转到If子句之外的第一行代码。换句话说,它只是跳过了它
我已经在两种条件下运行了它(即,被检查的字符串是空的,被检查的字符串有一个值),但这并不重要。两者都没有被击中
以下是我的Android Studio在调试器中运行的屏幕截图:
if块和else块都包含在优化过程中很可能被编译器删除的代码,因为它们实际上什么都不做
尝试将它们替换为实际执行的操作,如记录消息或将空的声明
和停止在其各自块之外
String EMPTY;
int stopHERE;
if (lastReading.isItTimeYet(Calendar.getInstance()))
{
lastReadingReturn = lastReading.SensorReadingChanges(z_value, chkOrient, inclination, rotation);
if (lastReadingReturn.isEmpty())
{
EMPTY = "TRUE";
// DO NOTHING
System.out.println("Doing nothing");
}
else
{
stopHERE = 0;
System.out.println("stopHERE set to zero");
}
}
编辑:由于我不被相信,我在Android Studio中模拟了OPs问题:
final Random random = new Random();
if(random.nextInt(1) != 0) {
String EMPTY = "EMPTY";
} else {
int stopHERE = 0;
}
所以,Android Studio实际上是在警告我们,断点所在的else块中没有可执行代码
运行时,这只会在第18行暂停执行一次(因为random.nextInt(1)
将始终为0)。第一个if语句可能出现问题。问题一定是分段错误(内核转储)。这段代码真的部署了吗?签入的lastReadingReturn可能是什么?如果(lastReadingReturn.someOtherCheck),您可以尝试使用else而不是bare else吗?是添加@Invexity这是错误的?你的意思是调试器没有使用调试版本吗?这些块中的代码完全没有副作用,删除它们保证不会改变执行结果,因此编译器可能只是将其丢弃,而不将其包含在编译的字节码中。由于不存在块的编译字节码,因此不可能在那里暂停执行。我在myeclipse中为(int x=0;x<5;x++){if(x==3){int y=x;}}}
运行以下琐碎代码,断点在预期的位置工作。尽管Eclipse不是Android Studio。我更新了一个模拟OPs问题的例子,显示Android Studio实际上告诉了我们这个问题。Raniz如果我能投票给你1000次,我会的。你完全正确!谢谢