2012-10-06 35 views
0

我創建了3個JPanel類和1個JFrame類。這3個JPanel類通過實例化相互連接(因爲另一個類需要某個類的某些屬性)。我想把所有3個JPanel類放到JFrame類中,但是我收到一條錯誤消息。如何修復計算器錯誤

錯誤

java.lang.StackOverflowError 
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
at  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:244) 
at javax.swing.UIDefaults.getUI(UIDefaults.java:751) 
at javax.swing.UIManager.getUI(UIManager.java:989) 
at javax.swing.JPanel.updateUI(JPanel.java:109) 
at javax.swing.JPanel.<init>(JPanel.java:69) 
at javax.swing.JPanel.<init>(JPanel.java:92) 
at javax.swing.JPanel.<init>(JPanel.java:100) 
at ComputerSeats.<init>(ComputerSeats.java:17) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 
at ComputerSeats.<init>(ComputerSeats.java:13) 
at Student.<init>(Student.java:11) 

ComputerSeats類

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class ComputerSeats extends JPanel implements ItemListener 
{ 
private JLabel seatNum; 
private JRadioButton[] seat = new JRadioButton[10]; 
private ButtonGroup seatGroup = new ButtonGroup(); 
private boolean[] seatOccupied = new boolean[10]; 
private String str = ""; 
private int station=0, occupiedSeatCounter=0; 
private Student stud = new Student(); 
private Monitor mtr = new Monitor(); 

public ComputerSeats() 
{ 


    setPreferredSize(new Dimension(200,200)); 
    setBorder(BorderFactory.createLoweredBevelBorder()); 
    setBackground (Color.yellow); 
    setLayout(null); 
    //SETS THE JPANEL THAT DISPLAYS STATION NUMBER OPTIONS 

    seatNum = new JLabel("Station Numbers: "); 
    seatNum.setLocation(60,90); 
    seatNum.setSize(600,400); 
    add(seatNum); 

    createSeatNumbers(); 
} 

public void itemStateChanged(ItemEvent e) 
{ 
    for(int i=0 ; i<10 ; i++) 
    { 
     if(e.getSource() == seat[i]) 
      station = (i+1); 
    } 
} 

public void createSeatNumbers() 
{ 
    int x=50,y=150; 
    for(int i=0 ; i<10 ; i++) 
    { 
     switch(i) 
      { 
       case 0: str = "1"; break; 
       case 1: str = "2"; break; 
       case 2: str = "3"; break; 
       case 3: str = "4"; break; 
       case 4: str = "5"; break; 
       case 5: str = "6"; break; 
       case 6: str = "7"; break; 
       case 7: str = "8"; break; 
       case 8: str = "9"; break; 
       case 9: str = "10"; break; 
      } 
     seat[i] = new JRadioButton(str); 
     seat[i].setSize(60,40); 
     seat[i].setLocation(x,y); 
     seat[i].addItemListener(this); 
     seat[i].setBackground(Color.green); 
     seatGroup.add(seat[i]); 
     add(seat[i]); 
     x=110; 

     if((i+1)%2==0) 
     { 
      x=50; 
      y=y+30; 
     } 
    } 

    for(int i=0 ; i<10 ; i++) 
    { 
     seatOccupied[i] = false; 
    } 
} 

public void occupySeat() 
{ 
    seatOccupied[station-1] = true; 
    for(JLabel jl: mtr.showArrayIdVal()) { jl.setText(stud.showField().getText()); } 
    seat[station-1].setBackground(Color.red); 
    occupiedSeatCounter++; 
} 

public void leaveSeat() 
{ 
    mtr.showArrayIdVal()[station-1].setText("Vacant Station"); 
    seat[station-1].setBackground(Color.green); 
    seatOccupied[station-1] = false; 
    stud.showField().setText(""); 
} 
public void showError(int num) 
{ 
    if(num == 0) 
    { 
     JOptionPane.showMessageDialog(null, "Select your Station Number", "ERROR!",JOptionPane.ERROR_MESSAGE); 
    } 
    else if(num == 1) 
    { 
     JOptionPane.showMessageDialog(null, "This Station is Vacant!", "ERROR!",JOptionPane.ERROR_MESSAGE); 
    } 
    else if(num == 2) 
    { 
     JOptionPane.showMessageDialog(null, "Station Occupied", "ERROR!",JOptionPane.ERROR_MESSAGE); 
    } 

} 

public int showStation() 
{ 
     return station; 
    } 

public boolean getSeatOccupied() 
{ 

     return seatOccupied[station-1]; 
} 

} 

Student類

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class Student extends JPanel implements ActionListener 
{ 

private JLabel studNum; 
private JTextField studNumTF; 
private JButton logInB, logOutB; 
private ComputerSeats compSeat = new ComputerSeats(); 

public Student() 
{ 
    //SET UP PANEL 

    setPreferredSize(new Dimension(80,200)); 
    setBorder(BorderFactory.createLoweredBevelBorder()); 
    setBackground (Color.yellow); 
    setLayout(null); 

    studNum = new JLabel("Enter Your Student Number: "); 
    studNum.setLocation(30,20); 
    studNum.setSize(200,100); 

    studNumTF = new JTextField(7); 
    studNumTF.setLocation(50,80); 
    studNumTF.setSize(120,30); 

    logInB = new JButton("Log In"); 
    logInB.setSize(100,30); 
    logInB.setLocation(15,350); 
    logInB.setBackground(Color.orange); 
    logInB.addActionListener(this); 

    logOutB = new JButton("Log Out"); 
    logOutB.setSize(100,30); 
    logOutB.setLocation(125,350); 
    logOutB.setBackground(Color.orange); 
    logOutB.addActionListener(this); 

    //ADD OBJECTS TO PANEL 

    add(studNum); 
    add(studNumTF); 
    add(logInB); 
    add(studNum); 

} 

public void actionPerformed(ActionEvent e) 
{ 
    //PERFORM OOPERATION AFTER CLICKING A BUTTON 

    if(e.getActionCommand() == "Log In") 
    { 
     logIn(); 
    } 

    if(e.getActionCommand() == "Log Out") 
    { 
     logOut(); 
    } 
} 

public JTextField showField() 
{ 
    return studNumTF; 
} 

public void logIn() 
{ 

    if(compSeat.showStation() == 0) 
     { 
      compSeat.showError(0); 
     } 
     else if(compSeat.getSeatOccupied() == true) 
     { 
      compSeat.showError(2); 
     } 
     else 
     { 
      compSeat.occupySeat(); 
     } 
} 
public void logOut() 
{ 
    if(compSeat.showStation() == 0) 
     { 
      compSeat.showError(0); 
     } 

     else 
     { 
      compSeat.leaveSeat(); 
     } 
} 
} 

Monitor類

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class Monitor extends JPanel{ 

private JLabel stationL, iDL, timeInL; 
private JLabel[] stationA,idA,timeA; 
private String str = ""; 


public Monitor() 
{ 
    //SET UP PANEL 
    setPreferredSize(new Dimension(80,100)); 
    setBorder(BorderFactory.createLoweredBevelBorder()); 
    setBackground (Color.yellow); 
    setLayout(null); 
    setLayout(null); 


    stationL = new JLabel("Station #", SwingConstants.CENTER); 
    iDL = new JLabel("Student Number"); 
    timeInL = new JLabel("Time In"); 

    stationL.setSize(100,20); 
    iDL.setSize(100,20); 
    timeInL.setSize(100,20); 

    stationL.setLocation(280,60); 
    iDL.setLocation(450,60); 
    timeInL.setLocation(630,60); 

    //ADD TO PANEL 

    add(stationL); 
    add(iDL); 
    add(timeInL); 

    //INSTANTIATION OF ARRAYS 
    stationA = new JLabel[10]; 
    idA = new JLabel[10]; 
    timeA = new JLabel[10]; 

    displayFixedValues(); 
} 

//METHOD THAT WILL DISPLAY THE FIRST VALUES OF THE MONITOR PANEL 
public void displayFixedValues() 
{ 

    int y = 85; 
    for(int i=0 ; i<10 ; i++) 
    { 
     switch(i) 
      { 
       case 0: str = "1"; break; 
       case 1: str = "2"; break; 
       case 2: str = "3"; break; 
       case 3: str = "4"; break; 
       case 4: str = "5"; break; 
       case 5: str = "6"; break; 
       case 6: str = "7"; break; 
       case 7: str = "8"; break; 
       case 8: str = "9"; break; 
       case 9: str = "10"; break; 
      } 
     stationA[i] = new JLabel(str, SwingConstants.CENTER); 
     stationA[i].setSize(100,30); 
     stationA[i].setLocation(280,y);   

     idA[i] = new JLabel("Vacant Station"); 
     idA[i].setSize(100,30); 
     idA[i].setLocation(450,y); 

     timeA[i] = new JLabel("00:00:00--"); 
     timeA[i].setSize(100,30); 
     timeA[i].setLocation(630,y); 
     y = y+30; 

     add(stationA[i]); 
     add(idA[i]); 
     add(timeA[i]); 
    } 
} 

//METHODS THAT WILL RETURN THE VALUE OF THE OBJECTS CREATED IN THIS CLASS 
public JLabel[] showArrayStationVal() 
{ 
    return stationA; 
} 
public JLabel[] showArrayIdVal() 
{ 
    return idA; 
} 
public JLabel[] showArrayTimeVal() 
{ 
    return timeA; 
} 
public JLabel showStationVal() 
{ 
    return stationL; 
} 
public JLabel showIdVal() 
{ 
    return iDL; 
} 
public JLabel showTimeVal() 
{ 
    return timeInL; 
} 
} 

MonitoringFrame類

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class MonitoringFrame extends JFrame 
{ 

private JPanel monitor, seats, student, time; 

public MonitoringFrame() 
{ 



    Monitor monitor = new Monitor(); 
    ComputerSeats seats = new ComputerSeats(); 
    Student student = new Student(); 

    Container pane = getContentPane(); 

    pane.add(monitor); 
    pane.add(seats); 
    pane.add(student); 

    setVisible(true); 
    setLayout(null); 
    setSize(400,300); 
    pack(); 


} 

public static void main(String[] args) 
{ 

    MonitoringFrame fr = new MonitoringFrame(); 

} 
} 
+1

你可以發佈你的代碼嗎? –

+0

我們不知道Monitor.java和ComputerSeats.java中的內容..請發佈代碼以獲得幫助.. :) – Amarnath

+0

我刪除了Monitor類中的實例化..錯誤現在位於第13行的ComputerSeats中 – kdot

回答

1

的解釋實在是相當簡單:

學生類有這個字段聲明:

private ComputerSeats compSeat = new ComputerSeats(); 

和ComputerSeats類有這個字段聲明:

private Student stud = new Student(); 

所以當你創建一個學生時,init通過創建ComputerSeat來創建ComputerSeat,其通過創建Student來初始化stud,其通過創建ComputerSeat來初始化compSeat等,直到堆棧溢出。

這是一個遞歸循環。