2010-01-10 2 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); 


     } 
} 

То, что я хочу сделать, это вызвать основной метод, который даст мне все элементы из списка, которые типа в формате пользователя: «ник Ipaddress»

public static void main(String args[]) { 

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

Например, это главное метод должен дать мне что-то вроде: Slavisha 123.34.34.34 , но это не так. В чем проблема?

ответ

4

Первая проблема: вы не переопределили toString() в User. Например:

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

Вторая проблема: каждый раз, когда экземпляр UserManager создан, вы изменяете значение вашего статического переменные ... но вы ничего не делаете если экземпляр UserManager не является создано. Одним из вариантов является изменение конструктор UserManager в статический инициализатор:

static { 
    // Initialize the static variables here 
} 

Третья проблема: вы не показали нам, где ваш метод main, так что мы не знаем, имеет ли он доступ к allTheUsers.

Четвертая проблема: «это не так» не является хорошим описанием вашей проблемы. Всегда говорите, что происходит: вы получаете исключение? Это просто печать неправильного?

+0

я сделал это также, но когда я скомпилировать класс диспетчера пользователей есть исключение: «Исключение в потоке„главный“java.lang.NullPointerException в UserMananger.main (UserManager.java:29) Java Результат: 1 « – AmateurProgrammer

+0

Правильно - это было бы потому, что вы не вызываете конструктор, поэтому код инициализации никогда не запускается. –

Смежные вопросы