如果以正确的方式放置大括号,为什么Java会出错?

时间:2017-11-25 14:04:39

标签: java methods instructions braces

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

4 个答案:

答案 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;
        }
  

允许外部方法和构造函数声明的唯一内容   是字段的声明。

Go to this link for more information.