2013-07-08 33 views
5

Hier ist mein Code, der die Probleme gegeben hat.Syntaxfehler auf Token, löschen Sie diese Token

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


} 

Ich habe keine Ahnung, warum es das tut.

Bearbeiten: Ich bearbeitet nach Ihrer Anfrage, um mehr Code zu sehen.

+4

klingt wie eine lokale Variable hat die Zugriffsspezifizierer –

+1

angewendet Für zukünftige Referenz sollten Sie die * genaue * Fehlermeldung und geben Sie an, welche Zeile in Ihrem Code verursacht es. –

Antwort

13

Sie sind ein Feld außerhalb der Klasse erklärt:

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

Es muss innerhalb einer Klasse platziert werden, wie unten:

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

Danke, das sehe ich. Jeder macht Fehler. Es ist 1 Uhr morgens hier. Hab etwas Geduld und Sympathie. Keine Notwendigkeit, die Frage zu senken. Danke an alle die mir freundlicherweise geholfen haben. – Rijnhardt

1

Sie setzen

public boolean running = false; 

außerhalb eines Klassendefinition, effektiv im globalen Namespace. Aber es gibt keine Globals in Java. Dies ist nicht legal.

Ich werde sagen, das ist eine seltsame Fehlermeldung für das obwohl. Ich würde ein wenig mehr vom Compiler erwarten. Etwas zu der Wirkung von class oder interface oder enum, denn sobald Sie die Anweisung mit public starten, gibt es genau drei rechtliche Dinge, die folgen können. Aber es ist was es ist. Also, der Compiler ist richtig zu beschweren, ich hätte nur eine informativere Fehlermeldung erwartet.

Verwandte Themen