Java 为什么我的if语句是错误的?

Java 为什么我的if语句是错误的?,java,if-statement,timer,Java,If Statement,Timer,这个代码应该阻止一个对象通过它,如果一个对象碰到它,使它必须等待1秒才能再次与它交互。我认为最好的地方是在keylistener之后设置计时器,但是当我试图放下if语句时,它只是作为一个错误出现,即使它看起来是完整的 我能做些什么来解决这个问题,还有更好的方法吗 我将问题语句放在中间,并在if语句的开头和结尾添加注释行。谢谢你的帮助 import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.event.KeyEv

这个代码应该阻止一个对象通过它,如果一个对象碰到它,使它必须等待1秒才能再次与它交互。我认为最好的地方是在keylistener之后设置计时器,但是当我试图放下if语句时,它只是作为一个错误出现,即使它看起来是完整的

我能做些什么来解决这个问题,还有更好的方法吗

我将问题语句放在中间,并在if语句的开头和结尾添加注释行。谢谢你的帮助

import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;

public class Imject {

int x = 30;
int y = 30;
int xa = 0;
int ya = 0;
private CrcGame Game;

public void keyPressed(KeyEvent e) {

    if (e.getKeyCode() == KeyEvent.VK_W)
        if (collision()){
            ya = 0;
            y =- y;
        }
        else {ya = 1;
        }
    if (e.getKeyCode() == KeyEvent.VK_S)
        if (collision()){
            ya = 0;
        }
        else {ya = -1;
        }
    if (e.getKeyCode() == KeyEvent.VK_A)
        if (collision()){
            xa = 0;
        }
        else {xa = 1;
        }
    if (e.getKeyCode() == KeyEvent.VK_D)
        if (collision()){
            xa = 0;
        }
        else {xa = -1;
        }
}

public void keyReleased(KeyEvent e) {
    ya = 0;
    xa = 0;
}

//Starts
if (collision()){

}
//Ends

void move() {
    if (x + xa > 0)
        x = x + xa;
    if (y + ya > 0)
        y = y + ya;
}

public Imject(CrcGame Game) {
    this.Game= Game;
}

private boolean collision() {
    return Game.player.getBounds().intersects(getBounds());
}

public void paint(Graphics2D g) {
    g.fillRect(x, y, 100, 20);
}

public Rectangle getBounds() {
    return new Rectangle(x, y, 100, 20);
}

}

你的问题如果语句不在函数中,它只是在类中。您需要将其移动到您的一种方法中。尝试结合移动功能和碰撞检查

void move() {
    if (x + xa > 0)
        x = x + xa;
    if (y + ya > 0)
        y = y + ya;
    }
    if (collision()){

    }
}

什么时候你会期望这个语句被执行?你是否意识到如果语句不能坐在一个类的中间?每一个if语句的开式和闭式括号在哪里?可能我的问题还不清楚:如果你用外部的if来表示哪个if语句?其他的块是一条语句。它不需要括号。此外,OP在代码中用注释指示问题的位置。在这个地方没有嵌套的ifs。如果碰撞不在方法中,至少我看不出来@安德烈。