[英]Initializing an array of variables within a class instance in Java
我来自C背景,并且遇到了Java问题。 目前,我需要初始化对象数组中的变量数组。
我在C中知道它类似于在structs
数组中malloc-ing
int
数组,如:
typedef struct {
char name;
int* times;
} Route_t
int main() {
Route_t *route = malloc(sizeof(Route_t) * 10);
for (int i = 0; i < 10; i++) {
route[i].times = malloc(sizeof(int) * number_of_times);
}
...
到目前为止,在Java中我有
public class scheduleGenerator {
class Route {
char routeName;
int[] departureTimes;
}
public static void main(String[] args) throws IOException {
/* code to find number of route = numRoutes goes here */
Route[] route = new Route[numRoutes];
/* code to find number of times = count goes here */
for (int i = 0; i < numRoutes; i++) {
route[i].departureTimes = new int[count];
...
但它吐出一个NullPointerException
。 我做错了什么,是否有更好的方法来做到这一点?
初始化阵列时
Route[] route = new Route[numRoutes];
numRoutes
个槽都填充了它们的默认值。 对于引用数据类型,默认值为null
,因此当您尝试在第二个for
循环中访问Route
对象时,它们都为null
,您首先需要以某种方式初始化它们,如下所示:
public static void main(String[] args) throws IOException {
/* code to find number of route = numRoutes goes here */
Route[] route = new Route[numRoutes];
// Initialization:
for (int i = 0; i < numRoutes; i++) {
route[i] = new Route();
}
/* code to find number of times = count goes here */
for (int i = 0; i < numRoutes; i++) {
// without previous initialization, route[i] is null here
route[i].departureTimes = new int[count];
Route[] route = new Route[numRoutes];
在java中创建一个Objects数组时,所有的槽都是用默认值声明的,如下所示Objects = null primitives int = 0 boolean = false
这些numRoutes槽都填充了它们的默认值,即null。 当您尝试访问循环中的Route对象时,数组引用指向null,您首先需要以某种方式初始化它们,如下所示:
// Initialization:
for (int i = 0; i < numRoutes; i++) {
route[i] = new Route();
route[i].departureTimes = new int[count];
}
for (int i = 0; i < numRoutes; i++) {
route[i] = new Route();
route[i].departureTimes = new int[count];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.