2011-03-25 34 views
0

你怎麼會去這樣如何打印每個類的實例的訪問器的輸出?

public class tmUser { 

    private String Username; 
    private int wHours; 
    static int numUsers; 


    public tmUser(){ 
     Username = ""; 
     wHours = 0; 
    } 

    public tmUser(String U, int H){ 
     Username = U; 
     wHours = H; 
    } 

    public void setUsername(String U){ 
     Username = U; 
    } 

    public void setwHours(int H){ 
     wHours = H; 
    } 

    public String getUsername(){ 
     return Username; 
    } 

    public int getwHours(){ 
     return wHours; 
    } 

    public static void initnumUsers(){ 
     numUsers = 0; 
    } 

    public static int getnumUsers(){ 
     return numUsers; 
    } 
} 

創建一個類,然後打印所有「tmUser」實例用戶名變量?在每個循環可能是?我hopeing這樣的事情

for each(tmUser){ 
    System.out.println(Username); 
} 

這是在其中顯示了所有創建的用戶的用戶名的程序菜單。

感謝先進!

+2

在java中,習慣上用大寫(即TmUser而不是tmUser)啓動類名,並用小寫字母(即用戶名而不是用戶名)啓動變量名。像這樣格式化你的代碼會使其他習慣於這些約定的Java開發人員更易讀。 – Greg 2011-03-25 16:21:13

回答

1

你幾乎擁有了:

List<TmUser> tmUsers = ... 
for(TmUser user : tmUsers) { 
    System.out.println(user.getUsername()); 
} 

你也想利用tmUserTmUser

0

當你創建一個tmUser將其添加到收藏喜歡

List<TmUser> tmUsers = new ArrayList<TmUser>(); 

TmUser tmUser = new TmUser(username, hoursWorked); 
tmUser.add(tmUser); 

// later 
for(TmUser tmUser: tumUsers) 
    System.out.println(tmUser.getUsername()); 
0

您需要存儲所有tmUser實例的第一個地方。你可以這樣來做:

public class tmUser { 
... 
public static List<tmUser> USERS = new ArrayList<tmUser>(); 

public tmUser() { 
    ... 
    USERS.add(this); 
} 

,然後打印:

for (tmUser user : tmUser.USERS) { 
    System.out.println(user.getUsername()); 
} 
0

3分目前的答案基本上是相同的。只是想補充一點,如果該類定義了返回用戶名的toString(),則不需要添加.getUsername()方法調用,因爲System.out.println(Object)將自動調用toString()方法。

這是否可以爲你的用例工作是有爭議的。方法toString()通常會提供更多關於對象的數據。

0

如已發佈的答案所示,這將涉及維護某種數據結構,該數據結構持有對所有tmUser實例的引用(例如List<tmUser>)。

這意味着對於創建的每個實例的引用將始終保持在那裏,它們將永遠不會被垃圾收集。當你決定不再需要一個實例時,你可以明確地刪除它們,但是你必須跟蹤所有實例的生命週期,並且基本上最終要自己完成內存管理。