Java是否决定何时必须戴上牙箍以及何时不必放下正确的下摆? 我正在编译一个关于机器人游戏的项目,但更改大括号顺序会给出错误,如果它们以正确的方式编写的话。我插入了两种不同类型代码的代码,但只有正确的代码:
1)
public class Robot {
//In Java, Class Variables should be private so that only its methods can change them.
private int centerX=100;
private int centerY=382;
private boolean jumped=false;
private int speedX=0;
private int speedY=1;
public void update(){
//Moves Character or Scrolls Background accordingly.
if(speedX<0)
centerX+=speedX;
else if(speedX==0)
System.out.println("Do not scroll the background.");
}
// Updates Y Position
if(centerY + speedY >=382)
centerY=382;
else
centerY+=speedY;
//Handles Jumping
if (jumped==true)
speedY+=1;
if(centerY+speedY>=382){
centerY=382;
speedY=0;
jumped=false;
}
}
2)
public class Robot {
//In Java, Class Variables should be private so that only its methods can change them.
private int centerX=100;
private int centerY=382;
private boolean jumped=false;
private int speedX=0;
private int speedY=1;
public void update(){
//Moves Character or Scrolls Background accordingly.
if(speedX<0)
centerX+=speedX;
else if(speedX==0)
System.out.println("Do not scroll the background.");
// Updates Y Position
if(centerY + speedY >=382)
centerY=382;
else
centerY+=speedY;
//Handles Jumping
if (jumped==true)
speedY+=1;
if(centerY+speedY>=382){
centerY=382;
speedY=0;
jumped=false;
}
}
}
所以将所有代码放在方法update()中都没有错误,而如果你从// Updates Y Position中省略所有这些指令,编译器就会发现错误。但技术上应该没有错误吗?
EDIT 第一个代码给出了错误: Syntax error, insert "}" to complete ClassBody
答案 0 :(得分:1)
在课程级别允许的任何内容仅为声明。就像声明变量,方法等一样。您希望代码对数据执行的所有工作必须始终在方法或构造函数中。 因此,当您将if else条件放在方法之外时,Java不知道如何处理所有代码。
答案 1 :(得分:0)
对于要执行的任何代码 - 它必须在方法内!如果代码不在方法或任何其他代码块中,那么它何时会被执行? 不执行类只执行类中的方法,块构造函数等。类的唯一目的是声明各种可执行块,如方法,块。 For more info you can visit this page
答案 2 :(得分:0)
由于你在最后一个if语句中的缩进,我很确定你的意思是要有一个代码块来包含最后一个if在2. last if。
答案 3 :(得分:0)
这是方法内部代码的一部分。
public void update(){
//Moves Character or Scrolls Background accordingly.
if(speedX<0)
centerX+=speedX;
else if(speedX==0)
System.out.println("Do not scroll the background.");
}
这部分不是:
// Updates Y Position
if(centerY + speedY >=382)
centerY=382;
else
centerY+=speedY;
//Handles Jumping
if (jumped==true)
speedY+=1;
if(centerY+speedY>=382){
centerY=382;
speedY=0;
jumped=false;
}
允许外部方法和构造函数声明的唯一内容 是字段的声明。