2010-01-10 47 views
1

我有這個類:簡單的ArrayList問題

public class User { 


    public User(String nickname, String ipAddress) { 

     nickname = nickname.toLowerCase(); 
     System.out.println(nickname + " " + ipAddress); 
    } 
} 

這將創建一個包含用戶對象的數組另一個類。

class UserMananger { 

    static User user; 
    static User user2; 
    static User user3; 

    static ArrayList allTheUsers; 

     public void UserManager() { 

      allTheUsers = new ArrayList(); 

      user = new User("Slavisha", "123.34.34.34"); 
      user2 = new User("Zare", "123.34.34.34"); 
      user3 = new User("Smor", "123.34.34.34"); 

      allTheUsers.add(user); 
      allTheUsers.add(user2); 
      allTheUsers.add(user3); 


     } 
} 

我想要做的是調用一個主要方法,這將使我從列表中的格式類型用戶的所有元素:「綽號ip地址」

public static void main(String args[]) { 

     System.out.println(allTheUsers.get(0)); 
    } 

例如,這主要方法應該給我這樣的: Slavisha 123.34.34.34 但它沒有。什麼似乎是問題?

回答

4

第一個問題:您尚未覆蓋User中的toString()。例如:

@Override 
public String toString() { 
    return nickname + " " + ipAddress; 
} 

問題二:每次創建的UserManager一個實例,你改變你的靜態變量的值......但你沒有做任何事情,除非UserManager實例時間創建。一種選擇是改變的UserManager的構造成一個靜態初始化:

static { 
    // Initialize the static variables here 
} 

第三個問題:你還沒有告訴我們您的main方法,所以我們不知道它是否有訪問allTheUsers

第四個問題:「它不」不是很好的描述你的問題。總是說什麼似乎正在發生:你是否得到例外?它只是打印錯誤的東西?

+0

我這樣做,也可是當我編譯級用戶管理器有一個例外: 「異常線程‘main’顯示java.lang.NullPointerException 在UserMananger.main(UserManager.java:29) Java結果:1 「 – AmateurProgrammer 2010-01-10 12:23:33

+0

正確 - 那是因爲你沒有調用構造函數,所以初始化代碼永遠不會運行。 – 2010-01-10 13:09:53