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

时间:2013-07-08 22:42:21

标签: java

这是我提供问题的代码。

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();
    }


}

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

修改 我根据您的要求编辑了更多代码。

2 个答案:

答案 0 :(得分:17)

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

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";
    ...

答案 1 :(得分:1)

你把

public boolean running = false;

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

我会说,这是一个奇怪的错误消息。我希望编译器能多一点。取决于classinterfaceenum的效果,因为一旦您使用public开始声明,就会有三个合法的事情可以遵循。但是它就是这样啊。所以,编译器正确抱怨,我只是期望一个更有用的错误信息。