我收到此错误:Syntax error on token "}", { expected after this token
我不确定这里的问题是什么,我已经检查过括号是否匹配,或者我认为,所以我并不完全清楚如何解决这个问题
import java.awt.*;
public class Player extends Entity {
private int directionX, directionY;
private Main instance;
private Rectangle hitbox;
private int life = 3;
public Player(Main instance, int x, int y){
super(x , y);
this.instance = instance;
width = 16; height = 16;
hitbox = new Rectangle(x, y, width, height);
}
public void draw(Graphics g){
move();
g.setColor(Color.WHITE);
g.fillOval(hitbox.x, hitbox.y, hitbox.width, hitbox.height);
g.setColor(Color.WHITE);
g.drawString("Lives: " + life, 20, 20);
}
private void move(){
if(!instance.getStage().isCollided(hitbox)){
directionY = 1;
} else { directionY = 0;
hitbox.x += directionX;
hitbox.y += directionY;
}
} // <<<<<< Getting error here <<<<<<<<<<
if(instance.getEnemyManager().isCollided(hitbox)){
if(life > 0){
life--;
hitbox.x = 800 / 2 - width / 2;
y = 390;
} else {
instance.setGameOver(true);
}
}
public void setdirectionX(int value){
directionX = value;
}
public void setdirectionY(int value){
directionY = value;
}
}
如果有人能回答这个问题,我会很高兴知道。
答案 0 :(得分:2)
查看问题区域中的代码:
private void move(){
if(!instance.getStage().isCollided(hitbox)){
directionY = 1;
} else { directionY = 0;
hitbox.x += directionX;
hitbox.y += directionY;
}
}
if(instance.getEnemyManager().isCollided(hitbox)){
结束括号是方法的结尾...然后你有一个if
语句,它在类声明的中间,而不是在任何方法中。您打算成为move()
的一员吗?如果是这样,你需要在它之前移除右括号。
请注意,至少在您的帖子中,缩进遍布各处。如果你让你的IDE格式化你的代码,真的有帮助,所以你可以看到什么代码是什么方法的一部分等等。这使得其他人也更容易阅读...
答案 1 :(得分:1)
你写
if(instance.getEnemyManager().isCollided(hitbox)){
if(life > 0){
life--;
hitbox.x = 800 / 2 - width / 2;
y = 390;
} else {
instance.setGameOver(true);
}
}
在任何方法之外,这就是你的编译器警告你的原因