【发布时间】:2021-12-27 09:59:54
【问题描述】:
我的问题通常很容易,但我只是看不出问题出在哪里。 -我将一个类的数组声明为一个全局变量,我在这个其他类中的多个函数中重用它。 实例化的类是:
public class Service {
int numticketsin;
String name="mi";
int[] perhour={0,0,0,0,0,0,0,0,0,0};
int moyenneticketperday;
int[] moyenneticketperdayperhour={0,0,0,0,0,0,0,0,0,0};
public Service(){}
}
全局变量:
Service[] services=new Service[10];
我使用的函数尝试填充数组:
public void getnamesofservices(){
int x=0;
Connection conn=db.java_db();
try {
Statement stmt = conn.createStatement();
String qry = "SELECT service_name from service ";
ResultSet rs = stmt.executeQuery(qry);
int i=0;
while (rs.next()) {
String namee=rs.getString("service_name");
System.out.println(namee);
services[i].name = namee;
i++;
}
conn.close();
}
catch (SQLException ex)
{
System.err.println("SQLException: " + ex);
}
}
错误:
''' Exception in thread "main" java.lang.NullPointerException: Cannot assign field "name" because "this.services[i]" is null
at com.mycompany.stats.NewJFrame.getnamesofservices(NewJFrame.java:195)
at com.mycompany.stats.NewJFrame.<init>(NewJFrame.java:122)
at com.mycompany.stats.Main.main(Main.java:16)'''
提前谢谢你!!
【问题讨论】:
-
那么第 195 行是哪一行? (我还强烈建议您开始遵循 Java 命名约定,例如
getNamesOfServices- 或者只是getServiceNames而不是getnamesofservices,以及比java_db更好的名称。 -
new Service[10]意味着您分配一个由Service实例组成的 10 元素数组,这些实例最初是null,但这并不意味着您初始化每个元素,因此所有分配后的元素是null。说真的,为什么不先调试它并正确初始化数组呢?
标签: java class pointers netbeans