2015-11-01 6 views
7

मैं प्रत्येक कक्षा के साथ दो वर्गों को एक और कक्षा का तात्कालिकता बनाने की कोशिश कर रहा हूं, लेकिन java.lang.StackOverFlowError का उपयोग कर रहा हूं। प्रथम श्रेणी लगता है किकक्षाओं पर StackOverFlow त्रुटि

public class ReverseGPA { 
GPpredictor gp_predictor = new GPpredictor(); //This is the line that causes error 

double CURRENT_CREDITS; 
double FUTURE_CREDITS; 
double CUM_GPA; 
double DESIRED_GPA; 

double NEW_GRADE_POINT; 
int ROUNDED_GRADE_POINT; 

double NEW_GPS; 
} 

और अन्य वर्ग इस

public class GPpredictor { 
ReverseGPA rev_gpa = new ReverseGPA(); //This is the line that causes error 

ArrayList<String> arrayCourseName = new ArrayList<>(); 
ArrayList<Integer> arrayCourseCredit = new ArrayList<>(); 
ArrayList<String> arrayCourseGrade = new ArrayList<>(); 

int COURSES; 
int CREDIT; 
String COURSENAME; 

//For predicting purposes 
int GRADE; 
} 

मैं इसे इस तरह बनाया क्योंकि मैं वर्ग GPpredictor में इस्तेमाल किया जाएगा वर्ग ReverseGPA से तरीकों का उपयोग करने की जरूरत है की तरह लग रहा नीचे (मैं, ग्रेड अंक का उपयोग करने के गेटर विधि)

का उपयोग कर किसी भी टिप्पणी के लिए बहुत आभारी होंगे द्वारा की जरूरत है और

उत्तर

7

में मदद करता है आप अनंत प्रत्यावर्तन भारत सरकार मिल गया है कक्षाओं के रूप में कक्षाएं स्वयं के भीतर एक-दूसरे के उदाहरण पैदा करती हैं और इसलिए रिवर्सजीपीए एक जीपीप्र्रेडिक्टर उदाहरण बनाता है जो एक रिवर्सजीपीए बनाता है जो एक रिवर्सजीपीए बनाता है जो एक जीपीप्र्रेडिक्टर बनाता है जो एक रिवर्सजीपीए बनाता है जो एक जीपीप्र्रेडिक्टर बनाता है ....

तो एक ठोस फैशन में, आपके पास:

public class A { 
    B b = new B(); 
} 

और

public class B { 
    A a = new A(); 
} 

बंद करो पागलपन - एक निर्माता पैरामीटर या सेटर विधि के माध्यम से इन कक्षाओं में कम से कम एक के लिए एक उदाहरण में गुजरती हैं। मुझे यकीन नहीं है कि आपकी कक्षाएं क्या करती हैं, इसलिए मैं यह नहीं कह सकता कि कौन सा (या यदि दोनों) इसे करना चाहिए।

फिर, एक ठोस फैशन में, कम से कम एक

public class A { 
    B b; 

    public void setB(B b) { 
     this.b = b; 
    } 
} 

और

public class B { 
    A a; 

    public B(A a) { 
     this.a = a; 
    } 
} 

और मुख्य विधि

public static void main(String[] args) { 
    A a = new A(); 
    B b = new B(a); // pass a into B 
    a.setB(b); // pass b into A 
} 
+0

हैलो में क्या है आप के लिए बहुत बहुत धन्यवाद तेज़ी से उत्तर! हालांकि, मुझे यह समस्या है। कक्षा रिवर्सजीपीए में एक विधि है जो GPpredictor विधि को कॉल करती है। जबकि GPpredictor में एक तरीका है जिसे रिवर्सजीपीए मूल्यों की आवश्यकता होती है। तो समाधान प्रत्येक कक्षा संख्या का उदाहरण बनाना है? क्या मैं कुछ भूल रहा हूँ? आपके उत्तर के लिए बहुत आभारी, अपना समय लेने के लिए खेद है – Adam

+0

@ user3764392: हाँ, मैंने पहले ही आपको बताया है कि आपको क्या करना चाहिए। आप प्रत्येक वर्ग में दोनों उदाहरण नहीं बना सकते हैं, इसलिए दूसरे में कम से कम एक उदाहरण पास करें। –

+0

आपको बहुत धन्यवाद, जिसने समस्या हल की! – Adam

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