2013-07-08 2 views
5

Вот мой код, который дает проблемы.Ошибка синтаксиса на токенах, удалите эти жетоны

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


} 

Я понятия не имею, почему это делается.

Редактировать: Я отредактировал его согласно вашему запросу, чтобы увидеть больше кода.

+4

звучит как локальная переменная, применив спецификатор доступа –

+1

Для справок в будущем вы должны вывести сообщение об ошибке * exact * и указать, какая строка в коде вызывает его. –

ответ

13

Вы объявляете поле за пределами класса:

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 час утра. Имейте некоторое терпение и сочувствие. Не нужно обсуждать вопрос. Спасибо всем тем, кто любезно помог мне. – Rijnhardt

1

Вы кладете

public boolean running = false; 

за пределами определение класса, эффективно в глобальном пространстве имен. Но на Java нет глобальных переменных. Это не законно.

Я скажу, что это странное сообщение для этого. Я ожидал бы немного больше от компилятора. Что-то подействовало class или interface или enum, потому что, как только вы начинаете с public, есть три вещи, которые могут следовать. Но что есть, то есть. Итак, компилятор справа жаловаться, я просто ожидал более информативного сообщения об ошибке.

Смежные вопросы