2011-10-06 99 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();