当涉及到Java中的“while”语句时,我遇到了一些麻烦

当涉及到Java中的“while”语句时,我遇到了一些麻烦,java,while-loop,Java,While Loop,这是一个Java问题。在KeyListener中挂起的if语句中运行while循环有点困难。尝试循环我的rectX-=snakespedy有点令人沮丧 public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_UP){ AUTO = false; //boolean for automatic movement FYI. while (snakeMoving == true

这是一个Java问题。在KeyListener中挂起的if语句中运行while循环有点困难。尝试循环我的rectX-=snakespedy有点令人沮丧

public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_UP){
        AUTO = false; //boolean for automatic movement FYI.
        while (snakeMoving == true) {//another boolean, for stoping and moving the snake
            rectY -= snakeSpeedY;
        }
我想知道if语句是否不能处理while循环?我做错了吗?所有反馈都将不胜感激

编辑:我主要关注代码的这一部分,因为这就是问题发生的地方。很抱歉没有包括If括号。

两件事:

注意右括号}的位置-它总是初学者错误的来源,但特别是当有循环时。您没有关闭if语句的括号。但同样重要的是,你到底把它放在哪里

循环循环时,应更改条件中使用的变量。在循环内部,或者在更复杂的场景中,在不同线程上的循环运行期间。结束循环的唯一其他可能性是调用break;。你似乎没有做这三件事中的任何一件。所以你得到了一个无限循环


请清理代码的格式。还要清楚地说明预期的行为和实际的行为。首先缺少一个右括号}。if与时间无关。此外,由于while循环不会更改snakeMoving的值,因此它永远不会退出循环。最后,请修正你的缩进,以符合你的要求?这不是代码审查论坛。@Renny getKeyCode return int。我有if语句的右括号。我只是展示了我自己编写的代码片段。我很抱歉给您带来任何困惑。我有一个if语句括号,它只是因为一个意外的原因而不起作用。@CA1K,正如Alex提到的,您有一个无限循环。我想你想要一个“如果”而不是“while”,或者不需要这两个。你的while循环是这样的,在大约1秒之内,它将减少数百万或数十亿像素的rectY。循环非常快。你应该在你的环内重新画你的蛇。但是对于蛇类游戏,你不应该在这里使用循环。