2012-01-05 47 views
0

這裏是方法方法對類添加到一個數組保持添加的類到所述第一位置僅

public void addModuleToStudent(Module aModule) 
{ 
    int position = 0; 
    if(position > 3) 
    { 
     System.out.println("Error: Student already has four modules\n"); 
    } 
    else 
    { 
     moduleArray[position] = aModule; 
     position++; 
    } 
} 

的問題是,位置似乎不被遞增的位置可變的,因爲當過我添加一個模塊類,它佔據了陣列中的第一個位置,當我添加另一個而不是添加到第二個位置時,它將覆蓋第一個位置。

+4

因爲你每次輸入方法初始化'位置'爲0? – 2012-01-05 13:51:52

回答

7

是的,position是一個局部變量。每次你打電話addModuleToStudent時候,你會得到一個新的變量,初始化爲0。

這聽起來像你想使這是一個實例變量,而不是,因此它的方法調用之間仍然存在。

更重要的是,不要使用數組來代替 - 使用ArrayList<Module>代替,然後你可以使用:

public void addModuleToStudent(Module module) 
{ 
    if (modules.size() > 3) 
    { 
     throw new SomeAppropriateException("Cannot have more than 4 modules"); 
    } 
    modules.add(module); 
} 
0

你重置position到每一個方法被調用

時間爲零

要麼使position在類的一個實例變量,或者使用Vector<Module>ArrayList<Module>而不是數組並調用:

modules.add(aModules); 

將每個新模塊添加到列表的末尾。

0

我假設你在每次調用addModuleToStudent方法和要添加一個模塊和moduleArray是一些全局變量...

這裏的問題是,當你調用該方法,position總是初始化爲0.要解決您的問題,您可能想要執行的操作是刪除int position = 0;行並將position變量用作全局變量。

3

position是一個局部變量,每次調用您的addModuleToStudent方法時,它都會重新初始化爲zero。所以,做一些像

int position=0 
public void addModuleToStudent(Module aModule) 
{ 
    //your logic here 

}