2013-07-08 55 views
5

Đây là mã của tôi đã đưa ra các vấn đề.Lỗi cú pháp trên mã thông báo, xóa các mã thông báo này

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


} 

Tôi không biết tại sao nó lại làm điều này.

Chỉnh sửa: Tôi đã chỉnh sửa theo yêu cầu của bạn để xem thêm mã.

+4

âm thanh như biến cục bộ đã áp dụng trình chỉ định truy cập –

+1

Để tham khảo trong tương lai, bạn nên đăng thông báo lỗi * chính xác * và cho biết dòng nào trong mã của bạn gây ra lỗi đó. –

Trả lời

13

Bạn đang tuyên bố một lĩnh vực bên ngoài các lớp:

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

Nó phải được đặt bên trong một lớp học, như dưới đây:

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

Cảm ơn, tôi hiểu điều đó. Ai cũng mắc sai lầm. Bây giờ là 1 giờ sáng. Có một số kiên nhẫn và thông cảm. Không cần phải downvote câu hỏi .. Nhờ tất cả những người vui lòng giúp đỡ tôi. – Rijnhardt

1

Bạn đặt

public boolean running = false; 

bên ngoài của một định nghĩa lớp, hiệu quả trong không gian tên chung. Nhưng không có hình cầu trong Java. Điều này không hợp pháp.

Tôi sẽ nói, đó là thông báo lỗi lạ cho điều đó. Tôi mong đợi nhiều hơn một chút từ trình biên dịch. Một cái gì đó có hiệu lực của class hoặc interface hoặc enum vì một khi bạn bắt đầu tuyên bố với public có chính xác ba điều hợp pháp có thể tuân theo. Nhưng đó là những gì nó được. Vì vậy, trình biên dịch là phải để khiếu nại, tôi chỉ có thể mong đợi một thông báo lỗi nhiều thông tin hơn.

Các vấn đề liên quan