2013-07-08 18 views
5

Sorunları veren kodum İşte.Jetonlarda sözdizimi hatası, bu kodları sil

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


} 

Bunu neden yaptığını bilmiyorum.

Düzenleme: Daha fazla kod görmek için isteğinize göre düzenledim.

+4

yerel bir değişken gibi erişim belirteci uygulanmış gibi geliyor –

+1

Gelecekte başvurmak için * kesin * hata mesajını göndermelisiniz ve kodunuzdaki hangi satırın buna neden olduğunu belirtmelisiniz. –

cevap

13

Sınıfın dışında bir alanı ilan ediyoruz:

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

Bu bir sınıfın içine yerleştirilmiş aşağıda gibi olmalıdır:

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

Teşekkürler, onu görüyorum. Herkes hata yapar. Sabah saat 1'de. Sabrın ve sempati var. Soruyu reddetmeye gerek yok .. Bana yardım eden herkese teşekkürler. – Rijnhardt

1

Bir ait

public boolean running = false; 

dışında koymak küresel isim alanında etkili sınıf tanımı. Ama Java'da hiç globals yok. Bu yasal değil. Bunun için bir garip hata mesajı diyeceksiniz. Derleyiciden biraz daha fazlasını beklerim. class veya interface veya enum etkilerinin bir sonucu olarak, public ile ifadeyi başlattığınızda, takip edebilecek üç yasal şey vardır. Ama, öyle. Yani, derleyici doğru şikayet etmek, ben sadece daha bilgilendirici bir hata mesajı beklenirdi.