令牌语法错误,删除这些令牌

这是我提供问题的代码。

package ca.rhinoza.game; import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Dimension; import javax.swing.JFrame; public boolean running = false; public class Game extends Canvas implements Runnable { private static final long serialVersionUID = 1L; public static final int WIDTH = 160; public static final int HEIGHT = WIDTH / 12 * 9; public static final int SCALE = 3; public static final String NAME = "Game"; private JFrame frame; public Game(){ setMinimumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE)); setMaximumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE)); setPreferredSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE)); frame = new JFrame(NAME); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new BorderLayout()); frame.add(this, BorderLayout.CENTER); frame.pack(); frame.setResizable(false); frame.setLocationRelativeTo(null); frame.setVisible(true); } public synchronized void start(){ new Thread(this).start(); } public synchronized void stop(){ } public void run() { } public static void main(String[] args){ new Game().start(); } } 

我不知道为什么会这样做。

编辑:我根据您的要求编辑了以查看更多代码。

你在课堂外声明一个字段:

 import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Dimension; import javax.swing.JFrame; public boolean running = false; /// <=============== invalid location public class Game extends Canvas implements Runnable { // <==== class starts here private static final long serialVersionUID = 1L; public static final int WIDTH = 160; public static final int HEIGHT = WIDTH / 12 * 9; public static final int SCALE = 3; public static final String NAME = "Game"; ... 

它必须放在一个类中,如下所示:

 import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Dimension; import javax.swing.JFrame; public class Game extends Canvas implements Runnable { // <==== class starts here public boolean running = false; /// <=============== valid location private static final long serialVersionUID = 1L; public static final int WIDTH = 160; public static final int HEIGHT = WIDTH / 12 * 9; public static final int SCALE = 3; public static final String NAME = "Game"; ... 

你把

 public boolean running = false; 

在类定义之外,有效地在全局命名空间中。 但Java中没有全局变量。 这不合法。

我会说,这是一个奇怪的错误信息。 我希望编译器多一点。 classinterfaceenum的效果,因为一旦你用public声明,就会有三个合法的事情可以遵循。 但是它就是这样啊。 因此,编译器是正确的抱怨,我只是期望一个更丰富的错误信息。