2012-03-06 13 views
8

प्रकार के एक संलग्न उदाहरण के साथ आवंटन को अर्हता प्राप्त करनी चाहिए, इसलिए मेरी कक्षा में "पब्लिक क्लास पीसीबी" घोषित किया गया है, मेरे पास निम्न कन्स्ट्रक्टर है: सार्वजनिक पीसीबी (int p, int a, int b)।fbMain प्रकार का कोई संलग्न उदाहरण उपलब्ध नहीं है। FbMain

public static void (String [] args) में मैं जहाँ मैं एक सरणी में एक अलग स्थिति में एक "पीसीबी" जोड़ने के पाश के लिए एक में निर्माता कॉल करने के लिए प्रयास करें। यहां लूप के लिए है जहां अंतिम पंक्ति है जहां मुझे त्रुटि मिलती है:

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

मैं क्या गलत कर रहा हूं? क्या यह वाक्यविन्यास है या यह मेरे कार्यक्रम की संरचना है। मैंने जावा का इतना उपयोग नहीं किया है और मुझे लगता है कि यह मेरी मुख्य समस्या है।

+0

आप हमें 'पीसीबी' कक्षा दिखाने के लिए भूल गए हैं। –

+0

[जावा का संभावित डुप्लिकेट - प्रकार फू प्रकार का कोई संलग्न उदाहरण सुलभ नहीं है] (http://stackoverflow.com/questions/9560600/java-no-enclosing-instance-of-type-foo-is-accessible) – fabian

उत्तर

15

आप प्रासंगिक कोड के सभी नहीं दिया है की तरह अपने वर्ग घोषणा करने के लिए static जोड़े, लेकिन त्रुटि इंगित करता है कि pcbfbMain की एक आंतरिक वर्ग है:

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

आप pcb स्थिर बनाकर इस त्रुटि को ठीक कर सकते हैं:

public static class pcb { 
} 

या कक्षा को अपनी फ़ाइल में ले जाकर। या, यदि pcb स्थिर नहीं हो सकता (क्योंकि यह fbMain का एक उदाहरण साथ जुड़ा हुआ है), आप एक नया pcbfbMain का एक उदाहरण पारित करके बना सकते हैं:

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

यह संभावना पहले कि आप चाहते हैं। कृपया यह भी ध्यान दें कि सम्मेलन के अनुसार, जावा टाइप नाम ऊपरी-केस अक्षर से शुरू होते हैं।

संबंधित मुद्दे