我是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做到这一点?
答案 0 :(得分:4)
Java和C数组之间的区别在于C初始化Array中的所有值,而Java将它们设置为null。所以当你打电话时
applicants.applicantArr[0].Id = 5;
您将获得NullPointerException,因为applicants.applicantArr [0]为null。 您需要创建一个新的applicantInfo并在访问它之前将其放入数组中:
allApplicants applicants = new allApplicants();
applicants.applicantArr[0] = new applicantInfo();
applicants.applicantArr[0].Id = 5;
答案 1 :(得分:1)
你需要在newGame()中执行此操作:
applicantInfo item = new applicantInfo();//first create a applicantInfo object
item.Id= 5;//set the object properties
applicants.applicantArr[0]= item;//assign the object to the array
这是因为数组在Java
中的工作方式与C
中的方式不同。看看this
此处还有一个tutorial,可以帮助您入门。
答案 2 :(得分:0)
我建议使用注释和TODO为您的代码建立一个高级结构,您可以填写详细信息。最后一部分,我建议newGame
方法的结构,将帮助你摆脱你得到的错误。
ApplicantInfo
类的结构:
public class ApplicantInfo {
private int ID;
private double quality;
// Constructor to create an instance with the specified ID value
public ApplicantInfo(int id){
// TODO: Initialize the value for ID field
}
// Method to get the value for ID
public int getID(){
// TODO: return value of ID field
}
// Method to set the value for ID
public void setID(int id){
// TODO: set the value for ID field
}
// Getter and setter methods for "quality"
// on the lines of the above methods
}
AllApplicants
类的结构:
public class AllApplicants {
private ApplicantInfo[] applicantArr = new ApplicantInfo[20];
// Method to get the applicant info at a given index
public ApplicantInfo getApplicant(int index){
// TODO: Get the applicant from the array present at the specified index
}
// Method to add an applicant info at a given index
public boolean addApplicant(ApplicantInfo applicant, int index){
// TODO: Try to add the specified applicant to the array at the specified index
// Return true to indicate that the applicant was successfully added,
// Return false to indicate that an applicant is already present at the specified index
}
}
因为这只是一个骨架
newGame
方法的结构:
public void newGame {
AllApplicants applicants = new AllApplicants();
// In order to achieve doing "applicants.applicantArr[0].Id = 5;", you
// need to do the following.
// Create a new applicant info with ID as 5
ApplicantInfo applicant = new ApplicantInfo(5);
// Add the applicant to the applicant array at index 0
applicants.addApplicant(applicant, 0);
}
除了阅读有关数组的内容,如@codeman所述,您可能还想看看Java Naming Convention