你能帮助我解决我的对象类人物问题吗?每次我运行程序时,我都有一个空指针问题。这是代码。
List<Student> listPerson = new ArrayList<>();
Student[] stud = null;
int counter = 0;
ResultSet rs = DBMSConnection.GetDetails();
while(rs.next()){
stud[counter] = new Student();
stud[counter].setFirst_name(rs.getString("first_name"));
stud[counter].setLast_name(rs.getString("last_name"));
stud[counter].setAddress(rs.getString("address"));
counter++;
}
for( int i = 0 ; i < counter ; i++){
listPerson.add(stud[i]);
}
这是您添加到其他答案的修改
我真正想要的就是这些人。
Student stud = new Student();
stud.firstname = "john";
stud.lastname = "doe";
Student stud2 = new Student();
stud2.firstname = "Mike";
stud2.lastname = "doe";
List<Student> list = new ArrayList<>();
list.add(stud);
list.add(stud2);
注意:有没有办法在循环中实例化Student stud;例如
int record = 100;
Student[] sa = null;
for(int i = 0; i<record; i++){
sa[i] = new Student[]; //instantiate Objects on the fly
list.add(sa[i]);
}
我想将所有第一条记录分配到第一个对象实例中,就像stud第一条记录stud2的值具有第二条记录并将其传递给列表一样。
答案 0 :(得分:1)
你的数组为空Student[] stud = null;
,因为它永远不会从null改变但实际上你不需要数组
考虑
ResultSet rs = DBMSConnection.GetDetails();
while(rs.next()){
Student stud = new Student();
stud.setFirst_name(rs.getString("first_name"));
stud.setLast_name(rs.getString("last_name"));
stud.setAddress(rs.getString("address"));
listPerson.add(stud);
}
修改强>
稍后您可以按如下方式遍历此ArrayList
for (Student student: listPerson) {
System.out.println (student.getFirst());
}
答案 1 :(得分:0)
数组是Java中的对象,用于存储多个相同类型的变量。数组 可以保存基元或对象引用,但数组本身将始终是堆上的对象,即使声明数组保存基本元素。
构造数组意味着在堆上创建数组对象(所有数组) 对象直播) - 也就是说,在数组类型上做一个新的。要创建数组对象,Java必须知道在堆上分配多少空间,因此必须在创建时指定数组的大小。数组的大小是数组将保存的元素数。
如果要动态管理数据,可以使用java.util中的一种Collection类型(包括HashMap,ArrayList,TreeSet)。
在你的情况下,
List<Student> listPerson = new ArrayList<>();
ResultSet rs = DBMSConnection.GetDetails();
while(rs.next()){
Student stud = new Student();
stud.setFirst_name(rs.getString("first_name"));
stud.setLast_name(rs.getString("last_name"));
stud.setAddress(rs.getString("address"));
listPerson.add(stud);
}
while循环完成此作业后,您将获得所有数据(listPerson
)并可以传递给JTable进行解析等。