2012-03-06 17 views
8

Vì vậy, trong lớp của tôi được khai báo là "lớp công khai pcb", tôi có hàm tạo sau: pcb công cộng (int p, int a, int b).Không có thể hiện kèm theo loại fbMain. Phải đủ điều kiện phân bổ với một thể hiện kèm theo kiểu fbMain

Trong public static void main (String [] args) Tôi cố gắng gọi hàm tạo trong vòng lặp for nơi tôi thêm "pcb" vào vị trí khác trong mảng. Đây là vòng lặp for nơi dòng cuối cùng là nơi tôi gặp lỗi:

for(int i=0; i<numJob; i++){ 
    pI = scan.nextInt(); 
    arr = scan.nextInt(); 
    bst = scan.nextInt(); 
    notHere[i]=new pcb(pI, arr, bst); 
} 

Tôi đang làm gì sai? Nó là cú pháp hay nó là cấu trúc của chương trình của tôi. Tôi đã không sử dụng Java nhiều và tôi nghĩ đó là vấn đề chính của tôi.

+0

Bạn quên hiển thị cho chúng tôi lớp 'pcb'. –

+0

Có thể trùng lặp của [Java - Không có thể hiện kèm theo loại Foo có thể truy cập được] (http://stackoverflow.com/questions/9560600/java-no-enclosing-instance-of-type-foo-is-accessible) – fabian

Trả lời

15

Bạn đã không cho tất cả các mã có liên quan, nhưng lỗi chỉ ra rằng pcb là một lớp bên trong của fbMain:

public class fbMain { 
    //... 
    public class pcb { 
    } 
    //... 
} 

Bạn có thể sửa lỗi này bằng cách đặt pcb tĩnh:

public static class pcb { 
} 

Hoặc bằng cách di chuyển lớp học sang tệp riêng của nó. Hoặc, nếu pcb không thể tĩnh (vì nó gắn liền với một thể hiện của fbMain), bạn có thể tạo mới pcb bằng cách thông qua một thể hiện của fbMain:

notHere[i] = instanceOfFbMain.new pcb(pI, arr, bst); 

Có khả năng là người đầu tiên mà bạn muốn. Cũng xin lưu ý rằng theo quy ước, các tên loại Java bắt đầu bằng một chữ cái viết hoa.

3

Thêm static để khai lớp học của bạn như thế này

public static class pcb... 
Các vấn đề liên quan