2013-04-21 80 views
2

我工作的一類實驗室,並有bwcomw憋屈的一種方法,我們必須這樣寫:如何返回一維數組?

Member[] getMembersByYear(int firstYear, int last year) - 位於 並返回誰在兩個指定歲之間,包括參加所有成員。這個 方法返回Java一維數組中的成員。陣列中必須沒有空的 插槽。

我有點難住我會怎麼做這件事,我會很感激任何意見。這是我迄今寫的:

public class Club 
{ 
// Define any necessary fields here ... 
private ArrayList <Member> members; 

/** 
* Constructor for objects of class Club 
*/ 
public Club() 
{ 
    // Initialise any fields here ... 
    members = new ArrayList <Member>(); 
} 

/** 
* Add a new member to the club's list of members. 
* @param member The member object to be added. 
*/ 
public void join(Member member) 
{ 
    members.add(member); 
} 

/** 
* @return The number of members (Member objects) in 
*   the club. 
*/ 
public int numberOfMembers() 
{ 
    if(members.size() > 0){ 
     return members.size(); 
    } 
    else{ 
    return 0; 
} 
} 

public void showMembers(){ 
    for(Member display: members){ 
     System.out.println(display.toString()); 

    } 
} 

public void showMembersByYear(int year){ 
    for(Member byYear: members){ 
     if(byYear.getYear() > 0){ 
      showMembers(); 
      } 

    } 
} 

public Member[] getMembersByYear(int firstYear, int lastYear) 
{ 
    Member checker = new Member();          //does not work, no constructor member() exists 
    while((firstYear <= checker.getYear()) && (lastYear >= checker.getYear())){ 

    } 


} 

public void removeMembersByYear(int year){ 
    Iterator it = members.iterator(); 



} 
} 
+0

哪裏會員類中定義的? 請輸入密碼? – 2013-04-21 10:46:23

+0

@Joshua Baker,請你澄清一下'member class'是怎麼樣的,'removeMembersByYear(int year)'的方法是什麼樣子?。讚賞如果你可以在這裏更新它 – Deepak 2013-04-22 11:51:31

回答

0

好吧。很高興看到你已經走了!首先,在你的方法中,你可以創建一個ArrayList。然後就是通過你的members數組循環的情況,並且當一年落在給定範圍之間時,你應該將它添加到新的ArrayList。然後,只需返回ArrayList.toArray方法。喜歡的東西:

public Member[] getMembersInYear(int firstYear, int secondYear) 
{ 
    ArrayList<Member> membersInRange = new ArrayList<Member>(); 
    for(every member in members) { 
     if(is in year) { 
      membersInRange.add(currentMember); 
     } 
    } 
    return membersInRange.toArray(); 
} 

這將返回一個數組沒有空值,其中只包含有一年firstYearsecondYear介於成員。

+0

他有一個編譯器錯誤。不工作,沒有構造函數成員()存在' – 2013-04-21 11:00:10

+0

membersInRange.add(我應該在這裏放什麼?); – 2013-04-21 11:04:35

+0

編譯器錯誤是因爲他的方法有點奇怪。我以爲我會在那裏幫忙.. – christopher 2013-04-21 11:04:40

0

試試這個

public Member[] getMembersByYear(int firstYear, int lastYear) { 
    Iterator membersIterator = members.iterator(); 
    ArrayList<Member> returnValues = new ArrayList<Member>(); 
    while (membersIterator.hasNext()) { 
     Member current = (Member)membersIterator.next(); 
     if ((current.getYear()>=firstYear) && (current.getYear()<=lastYear)) { 
      returnValues.add(current); 
     } 
    } 
    Member[] toReturn = new Member[returnValues.size()]; 
    returnValues.toArray(toReturn); 
    return toReturn; 
} 

希望這有助於

+0

他有一個編譯器錯誤。'//不工作,沒有構造函數成員()存在' – 2013-04-21 10:57:43

+0

@GnomezGrave他已經有一個名爲'members'的ArrayList,他想返回在'firstYear'和'lastYear ',他只需要遍歷'成員',並將他們的訂閱年份與給出的兩個分隔符進行比較。他不必創建新成員,因爲它們通過'join(成員成員)'被添加到'members',因此編譯器錯誤將會消失,因爲他不會使用'Member'的構造函數。 – BackSlash 2013-04-21 11:04:07

+0

Ahhh ..喲..明白了。 Thakx的解釋。 (y) – 2013-04-21 11:27:19