如何打印对象数组到屏幕?

时间:2017-04-15 22:08:24

标签: java oop

我想将日期数组(myDates)中的每个日期对象打印到屏幕上。 日期类具有月,日和年的值。

private static void printDates(Date[] myDates) throws IOException {
    @SuppressWarnings("resource")
    Scanner input = new Scanner(System.in);
    if(myDates.length == 0) {
        System.out.println("There are no dates to print.\n");
}
    else {
        System.out.println("Print the dates to the screen or to a file?");
        System.out.println("  1. Print to screen.");
        System.out.println("  2. Print to a new file.");
        System.out.print("Choice: ");
        int option = input.nextInt();
        System.out.println("");
        if(option == 1) {
            for(int i = 0; i < myDates.length; i++) { //Is this necessary?
                //Don't know how to print array of objects with toString method in date class.
            }

我认为它与日期类的get和set方法有关,但不太确定如何正确地执行这些操作。

public String getDate() {
    return "" + month.getMonth() + " " + day.getDay() + " " + year.getYear();
}

public void setDate(Date date) {
    //maybe make a date string then this.date = date; ???
}

或许您可以使用日期等级&#39; toString方法?这可能不正确。

public String toString(e) {
    return getMonthWord(day.toString()) + " " + month.toString() + " " + year.getYear();
}

1 个答案:

答案 0 :(得分:1)

  

我想在日期数组(myDates)中打印每个日期对象   屏幕。

首先,对于toString()方法,您无需传递参数,因为您已经说过您创建的toString()方法确实不正确。

改变这个:

public String toString(e) {
    return getMonthWord(day.toString()) + " " + month.toString() + " " + year.getYear();
}

到此:

public String toString() {
    return this.day + " / " + this.month + " / " + this.year;
}

考虑到数组中的每个日期都有toString(),您可以这样做:

if(option == 1) {
    Arrays.stream(myDates).forEach(System.out::println);
}

或使用典型的foreach循环:

if(option == 1) {
     for(Date d : myDates) System.out.println(d);
}

基本上,只要System.out.println调用数组中的任何Date对象,就会自动为该特定toString()对象调用Date方法,你需要的是不要说d.toString()