Android - for循环:for(boolean bool = true ;; bool = false)

时间:2013-05-22 01:23:42

标签: android

以下代码段是Human Step Detection Android应用程序的一部分 从Play商店下载。因为它工作正常,所以我假设 代码都有意义。

private boolean isMotion(float[] paramArrayOfFloat)
{
    if ((Math.abs(this.mOldAcc[0] - paramArrayOfFloat[0]) > 1.0F) || (Math.abs(this.mOldAcc[1] - paramArrayOfFloat[1]) > 1.0F) ||
        (Math.abs(this.mOldAcc[2] - paramArrayOfFloat[2]) > 1.0F));
        for (boolean bool = true; ; bool = false)
        {
            this.mOldAcc[0] = paramArrayOfFloat[0];
            this.mOldAcc[1] = paramArrayOfFloat[1];
            this.mOldAcc[2] = paramArrayOfFloat[2];
            return bool;
        }
}

关于以下代码,我有两个问题:

1)循环条件:

for (boolean bool = true; ; bool = false){}

这个条件意味着每次循环开始时,bool都会设置为  真正。然后当循环结束时,bool设置为false。什么是  这样做的目的?此外,这样做有什么意义  这里吗?

2)if条件:

if ((Math.abs(this.mOldAcc[0] - paramArrayOfFloat[0]) > 1.0F) || (Math.abs(this.mOldAcc[1] - paramArrayOfFloat[1]) > 1.0F) || (Math.abs(this.mOldAcc[2] -paramArrayOfFloat[2]) > 1.0F));

if条件通过添加a直接完成;就在这之后  条件。真的不知道为什么要这样做。

有人请帮助我。非常感谢!!!

2 个答案:

答案 0 :(得分:6)

for - 循环一个可能在第一次通过循环时想要做一些不同的事情时非常有用:

for (boolean firstTime = true; ; firstTime = false) {
    if (firstTime)
        doStuff();
    doOtherStuff();
}

这不是我选择这样做的方式,但我想这似乎是合情合理的。在任何情况下,循环体都使布尔值的设置无关紧要,因为无论什么都返回。

顺便说一句,你如何形容它并不是完全正确的。第一次循环开始时,它被设置为true,但是当循环的迭代重新启动时它被设置为false。

循环结束时(可能是break,否则循环结束),布尔值没有设置为任何东西 - 它的范围仅限于循环本身。

if - 语句1(没有正文)只有在条件本身存在副作用时才会有用(例如函数调用在某处进行更改)。标准Math函数不是这种情况,因此似乎真正没用。

最重要的是,该代码似乎是由一个严重损坏的代码生成器或编码器编写的,这个代码生成器是精神病患者或能力很弱(或者可能,也许,它还没有完成)。

答案 1 :(得分:0)

(1)是没有意义的,除非在循环中使用bool,它不是,并且它甚至不是循环因为它返回,所以它只是没有意义。

(2)毫无意义。