2013-03-18 65 views
0

我是Java新手。这是一个错误。对象变量的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

什么是错误 – PSR 2013-03-18 05:23:51

回答

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让你开始。

4

Java和C数组之间的区别在于C初始化数组中的所有值,而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; 
0

我会建议与意见和待办事项代码的高级结构,你可以填写详细信息。最后一部分,我建议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