class Dater{
int year;
int month;
int day;

void setYear(int yy){year=yy;}
void setMonthz(int mm){month=mm;}
void setDay(int dd){day=dd;}

void setDater(int yy,int mm, int dd){
year=yy;
month=mm;
day=dd;
}

int getYear(){return year;}
int getMonth(){return month;}
int getDay(){return day;}
}

class IDCard{
String name;
String sex;
String address;
String num;
Dater dater;

void setName(String pname){name=pname;}
void setSex(String psex){sex=psex;}
void setAddress(String paddress){address=paddress;}
void setNum(String pnum){num=pnum;}
void setDater(int y, int m, int d){
Dater dt= new Dater();
dt.setDater(y,m,d);
}

void setIDCard(String pname,String psex,String paddress,String pnum){
name=pname;
sex=psex;
address=paddress;
num=pnum;

}

String getName(){return name;}
String getSex(){return sex;}
String getAddress(){return address;}
String getNum(){return num;}
String getDater(){
int year;
int month;
int day;
Dater dt=new Dater();


year=dt.getYear();
month=dt.getMonth();
day=dt.getDay();

return year+"年"+month+"月"+day+"日";
}
}

public class Test{

public static final int ARRAY_LENGTH=10;

public static void main(String[] args){

IDCard[] person=new IDCard[ARRAY_LENGTH];

for (int n=0;n<ARRAY_LENGTH;n++){
person[n].setIDCard("XXX","男","天津XX大学","130XXXXXXXXXXXXX");
person[n].setDater(1987,n,28);
}

for(int m=0;m<ARRAY_LENGTH;m++){
System.out.println("姓名:"+person[m].getName());
System.out.println("性别:"+person[m].getSex());
System.out.println("出生日期:"+person[m].getDater());
System.out.println("家庭地址:"+person[m].getAddress());
System.out.println("身份证号:"+person[m].getNum());
}


}
}

解决方案 »

  1.   

    IDCard[] person=new IDCard[ARRAY_LENGTH];for (int n=0;n<ARRAY_LENGTH;n++){
    person[n] = new IDCard();//添加部分--
    person[n].setIDCard("XXX","男","天津XX大学","130XXXXXXXXXXXXX");
    person[n].setDater(1987,n,28);
    }
      

  2.   

    public static void main(String[] args){
    // 构造了指定长度的数组,但是数组中的每一个元素都是空对象
    IDCard[] person=new IDCard[ARRAY_LENGTH];
    for (int n=0;n<ARRAY_LENGTH;n++){
    // person[n]==null 为真,即person[n]为空对象,下句报空指针异常
    person[n].setIDCard("XXX","男","天津XX大学","130XXXXXXXXXXXXX");
      

  3.   

    改了3处:
    1,public void setDater(int y, int m, int d) {
      dater =new Dater();
      dater.setDater(y, m, d);
    }
    2,String getDater() {
     return dater.getYear() + "年" + dater.getMonth() + "月" + dater.getDay() + "日";
    }
    3,
    for (int n = 0; n < ARRAY_LENGTH; n++) {
      person[n] = new IDCard();
      person[n].setIDCard("XXX", "男", "天津XX大学", "130XXXXXXXXXXXXX");
      person[n].setDater(1987, n, 28);
    }看看有什么不同 ~~
      

  4.   

    出现空指针异常IDCard[] person=new IDCard[ARRAY_LENGTH];什么意思?
      

  5.   

    稍微优化一下代码,没事可以参考参考~class Dater {
      int year;
      int month;
      int day;  public Dater(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
      }  public int getYear() {
        return year;
      }  public int getMonth() {
        return month;
      }  public int getDay() {
        return day;
      }  public String toString() {
        return year + "年" + month + "月" + day + "日";
      }
    }class IDCard {
      String name;
      String sex;
      String address;
      String num;
      Dater dater;  public IDCard(String name, String sex, String address, String num,Dater dater) {
        this.name = name;
        this.sex = sex;
        this.address = address;
        this.num = num;
        this.dater = dater;
      }  String getName() {
        return name;
      }  String getSex() {
        return sex;
      }  String getAddress() {
        return address;
      }  String getNum() {
        return num;
      }  String getDater() {
        return dater.toString();
      }  public String toString() {
        String info = "";
        info += "姓名:" + this.name + "\n";
        info += "性别:" + this.sex + "\n";
        info += "出生日期:" + this.getDater() + "\n";
        info += "家庭地址:" + this.address + "\n";
        info += "身份证号:" + this.num + "\n";    return info;
      }
    }public class Test {
      public static final int ARRAY_LENGTH = 10;  public static void main(String[] args) {
        IDCard[] person = new IDCard[ARRAY_LENGTH];    for (int n = 0; n < ARRAY_LENGTH; n++) {
          Dater dater = new Dater(1987, n, 28);
          person[n] = new IDCard("XXX", "男", "天津XX大学", "130XXXXXXXXXXXXX",dater);
        }    for (int m = 0; m < ARRAY_LENGTH; m++) {
          System.out.println(person[m].toString());
        }
      }
    }