我知道标题听起来令人困惑,因为它确实令人困惑。它有点长,所以试着和我呆在一起。
这是我设计代码的布局
变量 构造函数 方法
我试着把名单上的Jlist填满。我也希望使用方法获取这些名称。所以这里。在我的变量中我有我的JList。它叫做contactNames; 我还有一个存储5个字符串的数组,这些字符串是联系人姓名; 无论如何,继承人的代码
String contact1;
String contact2;
String contact3;
String contact4;
String contact5;
String[] contactListNames;
JList contactList;
够简单。然后在我的构造函数中,我定义了Jlist以填充数组的内容
String[] contactListNames = new String[5];
JList contactList = new JList(contactListNames);
fillContactList();
方法fillContactList()即将推出。
现在是什么东西得到了球。 香港专业教育学院创建了三种不同的方法基本上我试图用所有这些来填充数组。 这是最简单的一个。它没有设置Jlist,它没有做任何compilicated。它所做的一切都是一次填充数组
public void fillContactList()
{
for(int i = 0;i<3;i++)
{
try
{
String contact;
System.out.println(" please fill the list at index "+ i);
Scanner in = new Scanner(System.in);
contact = in.next();
contactListNames[i] = contact;
in.nextLine();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
不幸的是,这不是qwork。我得到打印出来填写索引0;我输入了一些内容,我从
开始获得一个很好的大堆栈跟踪 contactListNames[i] = contact;
所以我的问题简直就是
为什么我不能用该方法填充数组。
*************** 888 *********************************************** 888 < / p>
按请求堆栈跟踪 请填写索引0
的列表overtone
please fill the list at index 1
java.lang.NullPointerException
at project.AdminMessages.fillContactList(AdminMessages.java:410)
at project.AdminMessages.<init>(AdminMessages.java:91)
at project.AdminUser.createAdminMessages(AdminUser.java:32)
at project.AdminUser.<init>(AdminUser.java:18)
at project.AdminUser.main(AdminUser.java:47)
答案 0 :(得分:2)
要在构造函数中定义数组,您可以沿着这些行执行某些操作,
// if values are predefined, you can explicitly fill the array
String[] contacts = {"Bill Gates", "Steve Jobs", "Jon Skeet"};
// or this way, both will work.
String[] contacts = new String[2];
查看JList from the Java Doc's,您肯定可以将数组传递给JList
String[] data = {"one", "two", "three", "four"};
JList dataList = new JList(data);
您收到NullPointerException
因为数组contactListNames
未初始化,您需要对其进行初始化。
答案 1 :(得分:1)
您可以像构建任何其他变量一样在构造函数中定义数组。所以,它看起来像是:
// define an array of size 3
String[] contactListNames = new String[3];
您获得异常的原因是您实际上没有初始化数组。你声明它,但你从来没有将它设置为一个值(或给它一个大小)。您应该发布错误的堆栈跟踪,但我怀疑它是NullPointerException。
答案 2 :(得分:0)
然后在我的构造函数中,我有 Jlist定义为填充自己 数组的内容
String[] contactListNames = new String[5]; JList contactList = new JList(contactListNames); fillContactList();
您在这里所做的是创建新的局部变量,这些变量会影响您班级中定义的变量。 将其更改为:
contactListNames = new String[5];
contactList = new JList(contactListNames);
fillContactList();