Java If语句未按预期工作

Java If语句未按预期工作,java,if-statement,methods,Java,If Statement,Methods,我目前正在编写游戏蛇。简而言之,我对if语句有一个问题。给我带来麻烦的部分是一种检查蛇是否与自身碰撞的方法 if语句如下所示: public void checkCol(){ for(int i = 0; i < snake.getLength(); i++){ if((snake.getXPosArray()[snake.getLength() - 1] == snake.getXPosArray()[i]) &&

我目前正在编写游戏蛇。简而言之,我对if语句有一个问题。给我带来麻烦的部分是一种检查蛇是否与自身碰撞的方法

if语句如下所示:

public void checkCol(){
    for(int i = 0; i < snake.getLength(); i++){
        if((snake.getXPosArray()[snake.getLength() - 1] == snake.getXPosArray()[i])
                && (snake.getYPosArray()[snake.getLength() - 1] == snake.getYPosArray()[i])){
            gameOver();
        }

    }
}
当我运行程序时,蛇立即停止。Wich是wierd,因为我检查了该方法将获得的值。上面显示的值是if语句检查的值。现在我相信88和66并不相等

我在论坛上四处寻找对&&运算符的更好解释,一篇帖子告诉我&&只检查两个语句是否第一个是真的。一个&将检查两个参数是否都为真。但是我用&和&&得到了同样的结果

我是不是忽略了一些愚蠢的事情?我累了吗?你们能看出这句话有什么不对吗?告诉我为什么它认为88==66


谢谢你的时间

你在蛇的每个细胞上循环,包括头部。头部与头部处于同一位置,因此蛇会吃掉自己的脸并死亡。不要将磁头包含在循环中。

与和的区别在于,一个是逻辑运算符,另一个是短路运算符


另外,除非getLength在头部下加了一个值,否则最终会将头部与头部本身进行比较。

如果,是否尝试打印
中的值?您的想法很好,但不能将头部与自身进行比较。我在数组长度中添加了-1。现在它就像一个符咒。非常感谢!现在应该上床睡觉了当5分钟的限制结束时,D将接受答案。宝贵的生命教训:不要吃自己的脸。我在数组长度中添加了-1。现在它就像一个符咒。非常感谢!现在应该上床睡觉了当超过5分钟限制时,D将接受答案。我在数组长度中添加了-1。现在它就像一个符咒。非常感谢!现在应该上床睡觉了当5分钟的限制结束时,D将接受答案。如果您想了解其中的区别,请查看有关和的链接。还要确保对有帮助的答案投赞成票。
xPos[2] == xPos[0] and the same with yPos[2] == yPos[0]
xPos[2] = 88 , xPos[0] = 66 , yPos[2] = 55 , yPos[0] = 55.