Java greenfoot上出错,“表达式的非法开始”

Java greenfoot上出错,“表达式的非法开始”,java,greenfoot,Java,Greenfoot,每当我点击compile,它就会说无论private位于哪里,表达式的开头都是非法的。代码如下: /** * Act - do whatever the PlatformJumper wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() {

每当我点击compile,它就会说无论private位于哪里,表达式的开头都是非法的。代码如下:

    /**
     * Act - do whatever the PlatformJumper wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        if(inTheAir)
        {
            fall();
        } else {
            getCommand();
        }
        move();

        if(isTouching(snowball.class))
        {
            get (snowball.class);
        }    

    private void run (String direction)
    {
        if(direction=="left")
            deltaX = walkSpeed*-1;
        else
            deltaX = walkSpeed;
    }

    private void stop ()
    {
        deltaX = 0;
    }

    private void jump()
    {
        deltaY += jumpHeight;
        inTheAir = true;
    }

    /*
     * fall() will be called whenever BallGuy is in the air. Decreases the deltaY by 1, creating
     * gravity.
     */
    private void fall()
    {
        deltaY-=fallSpeed;
    }

    private void move()
    {
        double newX = getX() + deltaX;
        double newY = getY() - deltaY;

        Actor platformBelow = getOneObjectAtOffset(0, groundHeight + 5, Platform.class);
        Actor platformAbove = getOneObjectAtOffset(0, -(groundHeight + 5), Platform.class);
        Actor platformToRight = getOneObjectAtOffset(sideWidth+5, 0, Platform.class);
        Actor platformToLeft = getOneObjectAtOffset(-(sideWidth+5), 0, Platform.class);
        if(platformBelow!=null)
        {
            if(deltaY<0)
            {
                deltaY = 0;
                inTheAir = false;
                GreenfootImage platformImage = platformBelow.getImage();
                int topOfPlatform = platformBelow.getY() - platformImage.getHeight()/2;
                newY = topOfPlatform - groundHeight;
            }
        }else if(getY() >= worldHeight - groundHeight) {
            if(deltaY < 0)
            {
                deltaY = 0;
                inTheAir = false;
                newY = worldHeight - groundHeight;
            }
        } else {
            inTheAir = true;
        }
        if(platformAbove != null)
        {
            if(deltaY>0)
            {
                deltaY=0;

                GreenfootImage platformImage = platformAbove.getImage();
                int bottomOfPlatform = platformAbove.getY() + platformImage.getHeight()/2;
                newY = bottomOfPlatform + groundHeight;
            }
        }
        if(getX()<=sideWidth)
        {
            deltaX = Math.abs(deltaX);
        }
        if(getX()>=worldWidth-sideWidth)
        {
            deltaX = Math.abs(deltaX) * -1;
        }
        if(platformToRight!=null)
        {
            deltaX = Math.abs(deltaX) * -1;
        }
        if(platformToLeft!=null)
        {
            deltaX = Math.abs(deltaX);
        }
        setLocation((int)newX,(int)newY);
    }

    private void getCommand()
    {
        if(Greenfoot.isKeyDown("left"))
        {
            run("left");
        } else if (Greenfoot.isKeyDown("right"))
        {
            run("right");
        } else 
        {
            stop();
        }

        if(Greenfoot.isKeyDown("up"))
        {
            jump();
        }
    }
}
在代码的顶部应该有这样的东西。现在,编译器认为代码底部有额外的括号。我想你把这个问题忘了吧

此外:

在第一个私有方法上方的行上添加一个括号。act方法未关闭

public void act() 
    {
        if(inTheAir)
        {
            fall();
        } else {
            getCommand();
        }
        move();

        if(isTouching(snowball.class))
        {
            get (snowball.class);
        }    
    }

private void run (String direction)
{
    if(direction=="left")
        deltaX = walkSpeed*-1;
    else
        deltaX = walkSpeed;
}

类似于此。

您缺少类定义的顶部,并且由于没有main方法,程序是如何运行的?是否可以编辑一点问题,使代码位于代码框中,并且问题本身更清楚一点?
public void act() 
    {
        if(inTheAir)
        {
            fall();
        } else {
            getCommand();
        }
        move();

        if(isTouching(snowball.class))
        {
            get (snowball.class);
        }    
    }

private void run (String direction)
{
    if(direction=="left")
        deltaX = walkSpeed*-1;
    else
        deltaX = walkSpeed;
}