2014-01-26 25 views
0

我有一個名爲學生構造:如何在方法內調用構造函數?

public Student(String suppliedFirstName, String suppliedLastName, int suppliedAge) { 
    firstName = suppliedFirstName; 
    lastName = suppliedLastName; 
age = suppliedAge; 
     } 

構造函數稱爲部分:

public Section(String inName, int inMaximum) { 
    name = inName; 
maximumStudents = inMaximum; 

List<Student> studentRoster = new ArrayList<Student>(); 
List<Student> studentWaitList = new ArrayList<Student>(); 
} 

和一種方法,我想通過調用學生構造給學生添加到列表studentRoster:

public void signUp(Student inStudent()) { 
    if(studentRoster.size() == maximumStudents) { 
studentWaitList.add(inStudent()); 
return; 
} 

studentRoster.add(inStudent()); 

} 

當我試圖做到這一點時,我不斷收到錯誤,說我還沒有完成MethodDeclaration。什麼是適當的語法來正確地做到這一點?

+0

您不要像在「Student inStudent()」中那樣在變量名後加上括號。此外,您的studentRoster和studentWaitList是局部變量,只要Section構造函數完成就會消失。 – Kayaman

+1

您將需要聲明您的studentRoster和studentWaitList列表作爲實例變量。目前它們是您的Section構造函數的局部變量,在構造函數完成後您將失去對它們的訪問權限。如果它們已經是實例變量,那麼你在映射它們,而不是在構造函數中初始化它們。 – Jems

+0

更改'public void signUp(Student inStudent()){'to'public void signUp(Student inStudent){' - 這將消除該錯誤。當然,你的代碼還有很多其他問題。 –

回答

0

試試這個:

public void signUp(Student inStudent) { 
    if (studentRoster.size() == maximumStudents) { 
     studentWaitList.add(inStudent); 
     return; 
    } 
    studentRoster.add(inStudent); 
} 
0

如果你想傳遞一個Student實例signUp()方法,它應該是:

public void signUp(Student inStudent) { 
    if(studentRoster.size() == maximumStudents) { 
     studentWaitList.add(inStudent); 
     return; 
    } 
    studentRoster.add(inStudent); 
} 

那麼你將不得不調用類的方法:

signUp(new Student(...)); 

Student lastStudent = new Student(...); 
signUp(lastStudent); 

注意,這樣做,對Student實例被它傳遞給方法signUp初始化之前。換句話說,構造函數在傳遞給方法之前被調用。

此外,您必須聲明studentRosterstudentWaitList作爲類別Section的字段。在

public Section(String inName, int inMaximum) { 
    name = inName; 
    maximumStudents = inMaximum; 
    List<Student> studentRoster = new ArrayList<Student>(); 
    List<Student> studentWaitList = new ArrayList<Student>(); 
} 

他們被聲明爲局部變量。您可能需要這樣做:

public class Section { 
    List<Student> studentRoste; 
    List<Student> studentWaitList; 

    public Section(String inName, int inMaximum) { 
     name = inName; 
     maximumStudents = inMaximum; 
     studentRoster = new ArrayList<Student>(); // INITIALIZE 
     studentWaitList = new ArrayList<Student>(); 
    } 
} 
+0

在最後一個小節中,您似乎每次都將這些列表初始化兩次。 –

+0

@DavidWallace感謝您指出。編輯。 – Christian

+0

工作!謝謝! – user3238190

相關問題