Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将数组传递到构造函数以在JList上使用_Java_Arrays_Constructor_Jlist - Fatal编程技术网

Java 将数组传递到构造函数以在JList上使用

Java 将数组传递到构造函数以在JList上使用,java,arrays,constructor,jlist,Java,Arrays,Constructor,Jlist,我知道这个标题听起来令人困惑,那是因为它是。时间有点长,所以尽量和我在一起 这是我的代码设计的布局 变数 建造师 方法 我也在尝试填写一个完整的名字列表。我也想用一种方法得到那些名字。这就来了 在我的变量中有我的JList。它被称为联系人姓名; 我还有一个数组,其中存储了5个字符串,它们是联系人名称; 这是代码 String contact1; String contact2; String contact3; String contact4; String contact5; String[

我知道这个标题听起来令人困惑,那是因为它是。时间有点长,所以尽量和我在一起

这是我的代码设计的布局

变数 建造师 方法

我也在尝试填写一个完整的名字列表。我也想用一种方法得到那些名字。这就来了

在我的变量中有我的JList。它被称为联系人姓名; 我还有一个数组,其中存储了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();
String[] contactListNames = new String[5];
JList contactList = new JList(contactListNames);
fillContactList();
fillContactList()方法很快就会出现

现在这里的东西得到球了。 我创造了三种不同的方法,但都没有奏效。基本上,我试图用所有的元素填充数组。 这是最简单的一个。它不设置Jlist,也不执行任何编译操作。它所做的也是一次填充一位数组

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();   
               }
           }
       }
简言之,我的问题是

为什么我不能用这个方法填充数组呢

***********************************************888******************************************************************888

按请求进行堆栈跟踪 请填写索引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)
泛音 请填写索引1处的列表 java.lang.NullPointerException 在project.AdminMessages.fillContactList中(AdminMessages.java:410) 位于project.AdminMessages.(AdminMessages.java:91) 位于project.AdminUser.createAdminMessages(AdminUser.java:32) 位于project.AdminUser.(AdminUser.java:18) 位于project.AdminUser.main(AdminUser.java:47)
在构造函数中定义数组就像定义其他变量一样。所以,它看起来像:

// define an array of size 3
String[] contactListNames = new String[3]; 

您得到异常的原因是您实际上没有初始化数组。您声明了它,但从未将其设置为值(或指定大小)。您应该发布错误的堆栈跟踪,但我怀疑这是一个NullPointerException。

要在构造函数中定义数组,您可以按照以下方式执行操作:

// 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

 String[] data = {"one", "two", "three", "four"};
 JList dataList = new JList(data);
您得到的是
NullPointerException
,因为数组
contactListNames
未初始化,您需要初始化它

然后在我的构造函数中,我有 Jlist定义为使用 数组的内容

    String[] contactListNames = new String[5];
    JList contactList = new JList(contactListNames);
    fillContactList();
String[] contactListNames = new String[5];
JList contactList = new JList(contactListNames);
fillContactList();
这里要做的是创建新的局部变量,这些局部变量隐藏在类中定义的变量后面。 将其更改为:

 contactListNames = new String[5];
 contactList = new JList(contactListNames);
 fillContactList();

回答第一个问题:是的,您可以将数组传递到JList的构造函数中。正如@Jeff在下面建议的那样,您只需修复数组的初始化。好的,我在构造函数中初始化了它,并更改了问题中的代码以匹配它现在的样子。不幸的是,我仍然得到那个错误。我应该在变量所在的位置或构造函数中初始化它吗?它可能对您的
fillContactList
方法不可见,在该方法内或类声明中的更高位置初始化数组,即在
public class MyClass
行下方,然后查看发生了什么。是!!!!你真是个天才!在构造函数外部将其定义为一个集合大小非常有效。现在我要让它和sql一起工作。。再次感谢,伙计,这不是问题,如果您已经知道要填充的数组的大小,那么最好将循环设置为读取(
for(int i=0;i