2011-10-06 98 views
4

我正在学习Java(The Gaming Side)。我买了一本书,它有一些我试图复制和测试的代码。唯一的问题是当我尝试编译它时出现错误。编译错误:表达式的非法开始

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) { 

    } 
    } 

} 

我知道我可能做错事,但我在检查了一遍又一遍,可有人请赐教什么我做错了吗?

+0

您是否正在使用IDE,如果您缺少右括号或括号会导致错误?你应该。看起来你错过了while循环中的大括号 – BRampersad

+1

我不确定你的母语,但是在英语中你不需要用大写字母来开始每一个单词。 – BalusC

+1

OMG有这么多相同的答案 - 这个世界到哪里去了。 – mateor

回答

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,并用它们来格式化你的代码......之类的东西缺少括号成为了很多更容易找到当您的代码格式正确。

+0

谢谢,需要更多地检查我的代码。 –

1

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

1

检查run()方法。你缺少一个右大括号终止while循环。然后被包括在以前的功能(错误地)的gameUpdate()方法声明

1

你是缺少结束您的While循环的托架

1

你错过了之前System.exit收盘}(0); ()

1

两个缺失的结束括号!尝试使用能突出显示这种遗漏的编辑器。 Eclipse很大,但是一旦你超越了那条学习曲线,它会真的帮助你。记事本++是精益&的意思,但你必须检查自己匹配的括号(它会为你找到它们)。

0

你缺少了while循环中运行方法的右括号.....开发使用IDE像Netbeans的是,Eclipse等..避免遗漏括号,因为它们是自动插入时必要的。希望它能解决你的问题。

0

你缺少半冒号,尝试: 私人无效gameUpdate();