तो मेरे पास दो फाइलें हैं, ग्रेडबुक जो मेरी मुख्य और कुछ अन्य विधियों को संग्रहीत करती है और फिर एफएससी छात्र जिसमें मेरा छात्र वर्ग और कुछ अन्य चीजें हैं। मैं गेटटर से पूर्णांक मान प्राप्त करना चाहता हूं।

public static void searchByID(int idSearch) {
    numStudents = FSCstudent.getNumStudents();
}

तो इस से int मान प्राप्त करने का प्रयास करने का यह मेरा प्रयास है:

public int getNumStudents() {
    return numStudents;
}

हालांकि, मैं सिर्फ त्रुटि प्राप्त करता रहता हूं गैर-स्थिर विधि getNumStudents() को स्थिर संदर्भ से संदर्भित नहीं किया जा सकता है

1
BustyGerman 1 अप्रैल 2020, 19:15
त्रुटि का अर्थ है कि getNumStudents() विधि स्थिर होनी चाहिए। स्टेटिक का अर्थ है कि कोई प्रोग्राम क्लास का इंस्टेंस बनाए बिना वेरिएबल/विधि तक पहुंच सकता है, उदाहरण के लिए new FSCstudent().getNumStudents() स्थिर नहीं है क्योंकि आप FSCstudent का इंस्टेंस बना रहे हैं, जबकि FSCstudent.getNumStudents() स्थिर है क्योंकि आप पहले FSCstudent का इंस्टेंस बनाए बिना इसे सीधे एक्सेस कर रहे हैं।
 – 
Nosrep
1 अप्रैल 2020, 21:06

2 जवाब

हाँ, जैसे @GauravMall ने कहा है कि आप विधि में स्थिर संशोधक जोड़कर फ़ंक्शन को स्थिर रूप से संदर्भित कर सकते हैं। एक अन्य विकल्प यह होगा कि FSCStudent का एक उदाहरण बनाया जाए और विधि को गैर-स्थिर तरीके से कॉल किया जाए।

स्थिर संस्करण:

आपको स्थिर संशोधक का उपयोग करके सदस्य numStudents को स्थिर भी बनाना होगा।

private static int numStudents;

public static int getNumStudents() {
    return numStudents;
}

गैर स्थैतिक संस्करण:

FSCStudent student = new FSCStudent();

int students = student.getNumStudents();
1
Jason 1 अप्रैल 2020, 19:36
सही यह वास्तव में बेहतर है! लगाना भूल गए।
 – 
Gaurav Mall
1 अप्रैल 2020, 19:20
मेरा मतलब है, प्रत्येक के लिए, आपका तरीका कुछ परिदृश्यों में पूरी तरह से मान्य है!
 – 
Jason
1 अप्रैल 2020, 19:20
1
बिल्कुल, यह ओपी के कार्यान्वयन पर निर्भर करता है, लेकिन फिर भी, आपके उत्तर में दोनों का होना महत्वपूर्ण है :)
 – 
Gaurav Mall
1 अप्रैल 2020, 19:21
1
तुम एक संत हो।
 – 
Jason
1 अप्रैल 2020, 19:24

आपको बस यह करने की ज़रूरत है:

public static int getNumStudents() {
    return numStudents;
}

हालांकि सावधान रहें क्योंकि आपको numStudents को स्थिर पर भी सेट करने की आवश्यकता है। इस कदर:

private static int numStudents;

आपका मुख्य कार्य होने का कारण एक स्थिर कार्य है और एक स्थिर कार्य गैर-स्थैतिक विधियों तक नहीं पहुंच सकता है। यदि आप नहीं जानते कि स्थिर विधि क्या है, तो इसे पढ़ें: जावा में स्टेटिक फ़ंक्शन ए>।

संपादित करें: जैसा कि @Jason ने भी बताया, यदि आप उस FSCstudent वर्ग की सूची बनाने का प्रयास कर रहे हैं, तो आपको पहले एक वस्तु बनाने की आवश्यकता है। कोड (सीधे जेसन से):

FSCStudent student = new FSCStudent();

int students = student.getNumStudents();
1
Gaurav Mall 1 अप्रैल 2020, 19:36