【问题标题】:Simple ArrayList question简单的 ArrayList 问题
【发布时间】:2010-01-10 12:17:56
【问题描述】:

我有这门课:

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);


       }
}

我想要做的是调用一个 main 方法,它将为我提供列表中所有类型为 User 的元素,格式为:“nickname ipAddress”

public static void main(String args[]) {

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

例如,这个 main 方法应该给我类似的东西: 斯拉维沙 123.34.34.34 但事实并非如此。似乎是什么问题?

【问题讨论】:

    标签: java list arrays


    【解决方案1】:

    第一个问题:你没有在User 中覆盖toString()。例如:

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

    第二个问题:每次创建 UserManager 的实例时,您都在更改静态变量的值...但您没有做任何事情除非@987654325 的实例@ 被建造。一种选择是将 UserManager 的构造函数更改为静态初始化程序:

    static {
        // Initialize the static variables here
    }
    

    第三个问题:你没有告诉我们你的main方法在哪里,所以我们不知道它是否可以访问allTheUsers

    第四个问题:“它没有”不能很好地描述您的问题。总是说似乎正在发生的事情:你有例外吗?是不是打印错了?

    【讨论】:

    • 我也这样做了,但是当我编译类用户管理器时出现异常:“UserMananger.main(UserManager.java:29) Java 结果中的线程“主”java.lang.NullPointerException 中的异常: 1"
    • 对 - 那是因为你没有调用构造函数,所以初始化代码永远不会运行。
    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 2011-01-29
    • 2018-03-07
    • 2011-10-30
    • 2013-02-17
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多