Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java arraylist中的对象打印为空_Java - Fatal编程技术网

Java arraylist中的对象打印为空

Java arraylist中的对象打印为空,java,Java,我正在尝试制作一个日记,它存储了一个日记条目列表,每个日记条目都有标题、日期和条目。日记本类将添加、删除和显示这些内容。现在我只是想通过打印字段来测试它,但是它们都打印为空。我已经研究过类似的问题,但我仍然不知道为什么。我是java新手,因此非常感谢您的帮助/意见 public class DiaryBook { ArrayList<Diary> diaryList = new ArrayList<Diary>(); static Scanner scanner = n

我正在尝试制作一个日记,它存储了一个日记条目列表,每个日记条目都有标题、日期和条目。日记本类将添加、删除和显示这些内容。现在我只是想通过打印字段来测试它,但是它们都打印为空。我已经研究过类似的问题,但我仍然不知道为什么。我是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();
    }
}
}

输入:

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

null
null
null

谢谢。

您为错误的参数指定了错误的值

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方法应该返回值,而不是打印它们…只是说…

您正在混合变量。java中的this语句指的是类中已经定义的语句,而没有该语句的语句指的是参数中的语句。如前所述,您只需要切换它们,它会打印null,因为它们没有声明为任何内容

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