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

Sib*_*ing 2 android

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

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;
        }
}
Run Code Online (Sandbox Code Playgroud)

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

1)循环条件:

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

这个条件意味着每次循环开始时,bool都设置为true.然后当循环结束时,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直接完成; 在条件之后.真的不知道为什么这样做了.

有人请帮帮我.非常感谢!!!

pax*_*blo 6

for-loop一个可以在你想通过循环做不同的事情在第一时间的情况下是有用的:

for (boolean firstTime = true; ; firstTime = false) {
    if (firstTime)
        doStuff();
    doOtherStuff();
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

if,如果有在条件副作用语句来一个(无正文)只可能是有用的本身(如函数调用进行更改的地方).这不是标准Math功能的情况,因此一个人似乎真的没用.

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