Java 对象变量数组变化

标签 java arrays object

我是 Java 新手。这会给出一个错误。

private class applicantInfo {
    int Id;
    double quality;
}
private class allApplicants {
    applicantInfo[] applicantArr = new applicantInfo[20];
}
public void newGame {
    allApplicants applicants = new allApplicants();
    applicants.applicantArr[0].Id = 5;
}

我在 applicants.applicantArr[0].Id = 5; 处收到错误。

我想做的就是与 C: 中的类似:

typedef struct _applicantInfo{
    int Id;
    double quality;
} applicantInfo;

typedef struct _allApplicants {
    applicantInfo applicantArr[20];
} allApplicants;

int main () {
    allApplicants applicants;
    applicants.applicantArr[0].Id = 5;  
}

如何在 Java 中做到这一点?

最佳答案

Java 和 C 数组之间的区别在于 C 初始化数组中的所有值,而 Java 将它们设置为 null。所以当你打电话

applicants.applicantArr[0].Id = 5;

您将收到 NullPointerException,因为申请人.applicantArr[0] 为 null。 您需要创建一个新的applicantInfo并将其放入数组中,然后才能访问它:

allApplicants applicants = new allApplicants();
applicants.applicantArr[0] = new applicantInfo();
applicants.applicantArr[0].Id = 5;

关于Java 对象变量数组变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15470218/

相关文章:

Java战舰使用arraylist : comparing user input to array list

javascript - 如何从 Web api 捕获具有多个对象的 $scope 对象

javascript - 在 Javascript 中将多个对象添加到数组中 n 次

java - 是什么导致多线程程序在切换线程时挂起?

java - 支持Sqlite的最简单的Java ORM是什么?

java - 事务性 CDI bean : How to force transaction rollback

java - 如何在数组列表中插入每 10 行?

java - 更新到 OSX 10.9.5 后如何更改 Java 应用程序的签名方式

java - 返回/打印数组

C++根据成员 bool 值对 vector 中的对象进行排序