दिलचस्प पोस्ट
सी ++ में अपवाद कैसे काम करते हैं (पर्दे के पीछे) समूह द्वारा मूल डेटा के एक स्तंभ को जोड़ना एक विशिष्ट सूचकांक में एक आइटम को कैसे सरणी में डालें? मेरे AJAX आवेदन में वापस बटन पर कॉल को रोकना: मैं यह कुछ नहीं करना चाहता हूँ! स्तंभ नाम के साथ अनपिवट करें जब मैं फ़ंक्शन के अंदर कोई पैरामीटर बदलता हूं, तो क्या यह कॉलर के लिए भी बदलता है? लूप में एक फ़ंक्शन कैसे काम करता है (जो दूसरी फ़ंक्शन देता है) काम करता है? JQuery के साथ एक तत्व आईडी बदलने Spring @Autowired उपयोग को समझना Android संपर्कों से पहला नाम और अंतिम नाम कैसे प्राप्त करें? var आत्म = यह? ITextSharp का उपयोग करने के लिए HTML में पीडीएफ कैसे परिवर्तित करें I आप मूल्य से एक शब्दकोश कैसे सॉर्ट करते हैं? प्रिफाईफेस प्रक्रिया / अपडेट और जेएसएफ़ को समझना च: अजाक्स निष्पादित / रेंडर विशेषताएँ मूल्य द्वारा PHP बहुआयामी सरणी खोज

जावा नॉन-स्टैटिक फ़ील्ड के लिए एक स्थिर संदर्भ नहीं बना सकता

यह जावा में मेरा पहला कार्यक्रम है और मुझे इस त्रुटि को समझने में समस्या हो रही है

Cannot make a static reference to the non-static field * 

तथा

गैर-स्थिर विधि के लिए एक स्थिर संदर्भ नहीं बना सकता *

 public class Cerchio{ float r; float area; float cfr; final double pi = 3.14; public static void main(String[] args){ System.out.println("CIRCLE PROGRAM\n"); r = 5; c_cfr(); c_area(); System.out.ptintln("The cir is: " + cfr); System.out.println("The area is: " + area); } float c_cfr(){ cfr =(float)(2 * pi * r); //casting return cfr; } float c_area(){ area = (float)(pi * (r*r)); return area; } } 

त्रुटियों क्या आप मुझे कोई सुझाव दे सकते हैं? मैं Android पर Sandide पर कोडिंग हूँ

वेब के समाधान से एकत्रित समाधान "जावा नॉन-स्टैटिक फ़ील्ड के लिए एक स्थिर संदर्भ नहीं बना सकता"

आप उदाहरण विधियों और खेतों को एक स्थिर विधि के भीतर से बुला रहे हैं, ऐसा कुछ नहीं किया जा सकता है क्योंकि उदाहरण के खेतों और विधियों के बिना किसी वस्तु के अस्तित्व में नहीं है, और मुख्य विधि के अंदर this ऑब्जेक्ट नहीं है। आपको इसके बजाय क्लास का एक उदाहरण बनाना होगा, और फिर उदाहरण के तरीकों को कॉल करें।

 public class Cerchio{ float r; float area; float cfr; final double pi = 3.14; public static void main(String[] args){ System.out.println("CIRCLE PROGRAM\n"); Cerchio cerchio = new Cerchio(); cerchio.r = 5; cerchio.c_cfr(); cerchio.c_area(); System.out.ptintln("The cir is: " + cerchio.cfr); System.out.println("The area is: " + cerchio.area); } float c_cfr(){ cfr =(float)(2 * pi * r); //casting return cfr; } float c_area(){ area = (float)(pi * (r*r)); return area; } } 

कई अन्य समस्याएं, …

  • आप सीधे कक्षा के खेतों तक पहुंच रहे हैं, कुछ ऐसा नहीं किया जाना चाहिए। इसके बजाय, फ़ील्ड निजी होनी चाहिए और आपको गेटर्स / सेटर्स / कंस्ट्रक्टर पैरामीटर का उपयोग करने के लिए खेतों को सेट, सेट और सेट करना चाहिए।
  • आपका कोड पढ़ना और समझना बहुत मुश्किल बना रहा है।

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


संपादित करें
आप राज्य:

मुझे समझ नहीं आया "इसके बजाय, फ़ील्ड निजी होनी चाहिए और आपको खेतों को सेट, सेट और सेट करने के लिए गेटर्स / सेटर्स / कंस्ट्रक्टर पैरामीटर का उपयोग करना चाहिए।" मुझे निजी फ्लोट c_cfr () लिखना चाहिए?

आपके फील्ड हैं:

 float r; float area; float cfr; 

यह वास्तव में एक क्षेत्र नहीं है, लेकिन एक निरंतर: अंतिम डबल पीआई = 3.14;

और केवल मठ का उपयोग करके इसे बदला / सुधार किया जा सकता है। पीआई।

आपके फ़ील्ड में बदल दिया जाना चाहिए:

 private float r; private float area; private float cfr; 

और आपको उन्हें केवल सार्वजनिक रूप से और सेटर तरीकों के जरिए ही एक्सेस करना चाहिए, और केवल तभी आवश्यक है जब बिल्कुल आवश्यक हो।

सरल तय करने के लिए प्रत्येक विधि के सामने शब्द स्थिर रखना है। यह एक सार्वभौमिक स्थैतिक परिधि है = 2pi * r आपकी सर्कल मेरी सर्कल से बड़ा हो सकती है (सर्कल के दोनों उदाहरण), लेकिन यह पता लगाने के लिए क्षेत्रफल एक सूत्र है

c_cfr () और c_area () गैर स्थिर तरीके हैं जो आप सीधे मुख्य विधि से कॉल करने का प्रयास कर रहे हैं। या तो विधि c_cfr () और c_area () को स्थिर के रूप में बनाएं या ऑब्जेक्ट संदर्भ का उपयोग करके उन्हें एक्सेस करें।