arraylist打印中的对象为null

时间:2014-04-24 02:04:40

标签: java

我正在制作一本日记,其中存有日记条目列表(日记),每个条目都有标题,日期和条目。这些将由DiaryBook类添加,删除和显示。现在我只是试图通过打印字段来测试它,但它们都打印为空。我查看了类似的问题,但仍然无法解决原因。我是java新手,所以感谢任何帮助/评论。

public class DiaryBook {

ArrayList<Diary> diaryList = new ArrayList<Diary>();
static Scanner scanner = new Scanner(System.in);

public void addDiary () {
    String title;
    String content;
    Calendar date;

    String[] splitDate;

    System.out.print("Entry title: ");
    title = scanner.nextLine();

    System.out.print("Entry for date (dd/mm/yyyy): ");
    splitDate = scanner.next().split("/");
    scanner.nextLine();

    int day = Integer.parseInt(splitDate[0]);
    int month = Integer.parseInt(splitDate[1]);
    int year = Integer.parseInt(splitDate[2]);

    date = new GregorianCalendar(year,month-1,day);

    System.out.print("Entry: ");
    content = scanner.nextLine();

    Diary d = new Diary (title, date, content);
    diaryList.add(d);

}

public void printDiaries() {
    for (Diary x:diaryList) {
        x.getTitle();
        x.getDate();
        x.getContent();
    }
}

}

我的日记课程:

公共课日记{

String title;
Calendar date;
String content;

public Diary (String title, Calendar date, String content) {
    title = this.title;
    date = this.date;
    content = this.content;
}

public void getTitle() {
    System.out.println(title);
}
public void getDate() {
    System.out.println(date);
}
public void getContent() {
    System.out.println(content);
}

}

输入:

Entry title: Blah
Entry for date (dd/mm/yyyy): 22/12/1990
Entry: Something

输出:

null
null
null

感谢。

2 个答案:

答案 0 :(得分:0)

您已将错误的值分配给错误的参数...

public Diary (String title, Calendar date, String content) {
    title = this.title;
    date = this.date;
    content = this.content;
}

这是将实例变量的值赋给参数,这些参数没有效果......

相反,请尝试将参数分配给实例变量...

public Diary (String title, Calendar date, String content) {
    this.title = title;
    this.date = date;
    this.content = content;
}

此外,你get方法应该返回值,而不是打印它们......只是说......

答案 1 :(得分:0)

你正在混淆你的变量。 java中的“this”语句指的是已在类中定义的语句,而没有“this”的语句指的是参数中的语句。所以如上所述,你只需要切换它们,它打印为null,因为它们没有被声明为任何东西。