Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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:解析列表并在数组中设置它时获取NullPointerException_Java - Fatal编程技术网

Java:解析列表并在数组中设置它时获取NullPointerException

Java:解析列表并在数组中设置它时获取NullPointerException,java,Java,这是我的Java程序,我在其中使用for循环设置对象,如图所示 ArrayList list = new ArrayList(); for(int j = 0;j<=4;j++) { Student student = new Student(); studunt.name="Ravi"; list.add(student); } 我在这行得到一个NullPointerException 回答学生[in]=数据 请帮忙,谢谢 初始化! 像 可能是 或 您需要先初始化数组,然后才能使用它。

这是我的Java程序,我在其中使用for循环设置对象,如图所示

ArrayList list = new ArrayList();
for(int j = 0;j<=4;j++)
{
Student student = new Student();
studunt.name="Ravi";
list.add(student);
}
我在这行得到一个NullPointerException 回答学生[in]=数据

请帮忙,谢谢

初始化! 像

可能是


您需要先初始化数组,然后才能使用它。大概是这样的:

StudentResponse  response = new StudentResponse();
response.student = new Student[list.size()];
for (int in = 0; in < list.size(); in++) {
{
    Student data = (TopListsQuoteData) list.get(in);
    response. student[in] = data;
}

我还建议使用列表的迭代器,而不是通过索引访问项目。这是可行的,但我觉得它不太干净,效率肯定也不高。

您是否在StudentResponse的构造函数中初始化数组?差不多

public StudentResponse(int numberOfStudents) {
   this.student = new Student[numberOfStudents];
}
您可能希望切换出student数组,因为另一种列表通常更易于使用

public class StudentResponse {
    private List<Student> students;

   public StudentResponse() {
      this.students = new ArrayList<Student>();
   }

   public void addStudent(Student student) {
       this.students.add(student);
   }

   public List<Student> getStudents() {
       return this.students;
   }

}
现在,您可以这样修改代码:

StudentResponse  response = new StudentResponse();

for (int in = 0; in < list.size(); in++) {
{
Student data = (TopListsQuoteData) list.get(in);
response.addStudent(data);
}

你的代码有拼写错误

Student student = new Student();
studunt.name="Ravi";
但我认为你想要:

Student student = new Student();
student.name="Ravi";

如果您只需要列表的副本,但作为数组:

response.student = list.toArray(new Student[list.size()]);

你的公立学生怎么样;变量初始化?如果您发布的代码至少是可编译的,那么它也很有用。声明一个名为student的变量,然后使用另一个名为studunt的变量。您所拥有的和我们所看到的之间可能还有什么其他差异?您仍然需要维护一个索引来处理生成的student[]数组,因此在这种情况下使用foreach可能没有那么干净-而且,您声称,通常通过,List.get是O1。它仍将包含null。奥利维尔·罗杰(Olivier Roger)的评论是关键。好吧,就你所看到的代码而言,这是一个操作响应。学生[in]=数据;正在引发异常。除非在其他地方显式设置response.student null,否则此代码将正常工作。显然,数组将包含null,因此,如果您提取未设置为任何值的元素,将看到null。但是,只要不越过数组的边界,插入就可以了。我想这就是重点。
StudentResponse  response = new StudentResponse();

for (int in = 0; in < list.size(); in++) {
{
Student data = (TopListsQuoteData) list.get(in);
response.addStudent(data);
}
Student student = new Student();
studunt.name="Ravi";
Student student = new Student();
student.name="Ravi";
response.student = list.toArray(new Student[list.size()]);