我正在学习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) {
}
}
}
我知道我可能做错了但是我一遍又一遍地检查过,有人可以告诉我我做错了什么吗?
答案 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);
}
您可能希望获得类似eclipse,netbeans或intellij(全部免费)的IDE,并使用它们来格式化您的代码......丢失大括号等内容变得更容易查找代码格式正确的时间。
答案 1 :(得分:1)
你错过了while循环的结束}。如果你想知道(而且你应该),它会说“非法开始表达,因为”私有......“正试图启动一个新的代码块,但是Java解析器知道它还没有完成块它还在。
答案 2 :(得分:1)
检查您的run()
方法。你错过了一个结束花括号来终止while循环。然后将gameUpdate()方法声明包含在上一个函数中(错误地)
答案 3 :(得分:1)
您缺少结束While循环的括号。
答案 4 :(得分:1)
答案 5 :(得分:1)
你在System.exit(0)之前错过了一个结束};在run()
中答案 6 :(得分:1)
两个缺少端括号!尝试使用能够突出显示此类遗漏的编辑器。 Eclipse非常重要笨重,但一旦你超越了学习曲线,它将真正帮助你。 Notepad ++很精简&amp;意思是你必须自己检查匹配的括号(它会为你找到它们)。
答案 7 :(得分:0)
你缺少运行方法中While循环的右括号.....使用IDE开发,如Netbeans,Eclipse等......以避免错过Braces,因为它们在必要时自动插入。希望它能解决你的问题。
答案 8 :(得分:0)
你缺少半冒号,试试: private void gameUpdate();