Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio中的Java代码未命中IF或ELSE_Java_Android_Android Studio - Fatal编程技术网

Android Studio中的Java代码未命中IF或ELSE

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

我正在运行androidstudio并设置断点,但在IF…ELSE两种情况下,代码都没有被执行。在我看来,这样的事情是不可能的。IF或ELSE应该为true。。。对吧?

代码如下:

       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次,我会的。你完全正确!谢谢