gpt4 book ai didi

Java 代码在 Android Studio 中没有命中 IF 或 ELSE

转载 作者:行者123 更新时间:2023-11-29 05:08:23 25 4
gpt4 key购买 nike

我正在运行 Android Studio 并设置断点,但是在我的两个 IF...ELSE 条件下,代码都没有被执行。在我看来,这样的事情是不可能的。 IF 或 ELSE 应该为真...对吗?

代码是这样的:

       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 获取值就好了。我没有看到任何错误被抛出。

我在 String EMPTY = "TRUE"; 行和 int stopHERE = 0; 行都设置了断点,但都没有命中。我可以在 if 之前停止就行了。但是,当我尝试进入或跨过下一行时,调试器会跳转到 If 子句 OUT 的第一行代码。换句话说,它只是跳过它。

我已经在两种情况下运行了它(即被检查的字符串为空并且被检查的字符串有一个值)但没关系。两者都没有被击中。

这是我在调试器中运行的 Android Studio 的屏幕截图:

Screenshot of Android Studio

最佳答案

您的 if block 和 else block 都包含很可能在优化期间被编译器删除的代码,因为它们实际上不做任何事情。

尝试将它们替换为实际执行某些操作的东西,例如记录消息或将 EMPTYstopHERE 的声明移到它们各自的 block 之外。

   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 中模拟了 OP 问题:

final Random random = new Random();
if(random.nextInt(1) != 0) {
String EMPTY = "EMPTY";
} else {
int stopHERE = 0;
}

Removed Code

因此,Android Studio 实际上是在警告我们断点所在的 else block 中没有可执行代码。

运行时,这只会在第 18 行暂停执行一次(因为 random.nextInt(1)始终为 0)。

关于Java 代码在 Android Studio 中没有命中 IF 或 ELSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29617006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com