编译错误:非法启动表达式

时间:2011-10-06 21:14:32

标签: java

我正在学习Java(游戏方面)。我买了一本书,它有一些代码,我试着复制并测试它。唯一的问题是,当我尝试编译它时会出现错误。

C:\Users\James\Desktop\Java>Javac GamePanel.java                                        
GamePanel.java:57: illegal start of expression                              
        private void gameUpdate()                                   
        ^                         
GamePanel.java:57: illegal start of expression                             
        private void gameUpdate()                               
                ^                                              
GamePanel.java:57: ';' expected                        
        private void gameUpdate()                                 
                               ^                      
GamePanel.java:64: reached end of file while parsing                                
}→                   
 ^                                    
4 errors              

代码是:

public class GamePanel extends  JPanel implements Runnable
{
    private static final int PWIDTH = 500;
    private static final int PHEIGHT = 400;

    private Thread animator;
    private volatile boolean running = false;

    private volatile boolean gameOver = false;

    public GamePanel()
    {
        setBackground(Color.white);
        setPreferredSize( newDimension(PWIDTH, PHEIGHT));
    }

    public void addNotify()
    {
        super.addNotify();
        startGame();
    }

    public void startGame()
    {
        if (animator == null || !running)
        {
            animator = new Thread(this);
            animator.start();
        }
    }

    public void stopGame()
    {
        running = false;    
    }

    public void run()
    {
        running = true;
        while(running)
        {
            gameUpdate();
            gameRender();
            repaint();

            try
            {
                Thread.sleep(20);
            }
        catch(InterruptedException ex)
        {

        }
        System.exit(0);
    }

    private void gameUpdate()
    {
    if (gameOver == false) {

    }
    }

}

我知道我可能做错了但是我一遍又一遍地检查过,有人可以告诉我我做错了什么吗?

9 个答案:

答案 0 :(得分:5)

您错过了} while循环未关闭。

public void run()
{
    running = true;
    while(running)
    {
        gameUpdate();
        gameRender();
        repaint();

        try
        {
            Thread.sleep(20);
        }
        catch(InterruptedException ex)
        {

        }
    } // <<< this is the missing brace
    System.exit(0);
}

您可能希望获得类似eclipsenetbeansintellij(全部免费)的IDE,并使用它们来格式化您的代码......丢失大括号等内容变得更容易查找代码格式正确的时间。

答案 1 :(得分:1)

你错过了while循环的结束}。如果你想知道(而且你应该),它会说“非法开始表达,因为”私有......“正试图启动一个新的代码块,但是Java解析器知道它还没有完成块它还在。

答案 2 :(得分:1)

检查您的run()方法。你错过了一个结束花括号来终止while循环。然后将gameUpdate()方法声明包含在上一个函数中(错误地)

答案 3 :(得分:1)

您缺少结束While循环的括号。

答案 4 :(得分:1)

您没有关闭循环}

我建议您使用IDE为您指出这一点。

http://netbeans.org

答案 5 :(得分:1)

你在System.exit(0)之前错过了一个结束};在run()

答案 6 :(得分:1)

两个缺少端括号!尝试使用能够突出显示此类遗漏的编辑器。 Eclipse非常重要笨重,但一旦你超越了学习曲线,它将真正帮助你。 Notepad ++很精简&amp;意思是你必须自己检查匹配的括号(它会为你找到它们)。

答案 7 :(得分:0)

你缺少运行方法中While循环的右括号.....使用IDE开发,如Netbeans,Eclipse等......以避免错过Braces,因为它们在必要时自动插入。希望它能解决你的问题。

答案 8 :(得分:0)

你缺少半冒号,试试: private void gameUpdate();