此问题在此处已有答案:
What is a NullPointerException, and how do I fix it?(12个答案)
11个月前关闭。
我的问题通常很简单,但我就是不明白问题出在哪里。-我正在声明一个类的数组作为全局变量,我在另一个类中的多个函数中重用它。示例化的类是:
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)'''
提前谢谢你!!
1条答案
按热度按时间p4tfgftt1#
这意味着您创建了一个有10个位置的数组,但所有这些位置都是空的(意味着它们在数组的每个位置都有
null
)。因此,当尝试
services[i].name
时,您会得到NullPointerException
,因为services[i]
是null
。初始化的方法有很多种,这取决于您的业务案例。但仅举两种可能性:
1.在宣告处初始化它:
1.或者在使用它之前,如果您没有覆盖它: