使用 toString() 打印出传入 'this' 的日期

Using toString() to print out the date with a 'this' passed in

所以我刚刚了解了 toString 并且我制作了一个程序来显示带有表示日期的字符串的日期但是由于某种原因它在我 运行 之后单独重复日期我得到:

今天的日期是 6/5/15

6/5/15

public class Main{

  public static void main(String[] args) {
    Date date= new Date(6,5,15);
    System.out.println(date);

  }
}

...

public class Date{

  private int month;
  private int day;
  private int year;

  public Date(int m, int d, int y){
    month = m;
    day = d;
    year = y;

    System.out.printf("The date for today is %s\n", this);
  }

  public String toString(){
    return String.format("%d/%d/%d", month, day, year);
  }
}

从构造函数中删除System.out.printf("The date for today is %s\n", this);,并将main( )中的打印语句修改为System.out.printf("The date for today is ", tntobject);

通过创建某个 Class 的对象,您正在调用构造函数。

在这种情况下,构造函数已经得到行 System.out.print( //code );

所以为了打印出来你只需写:

TnT tnt = 新 TnT(5,6,7);

不要在constructor里面打印。这不是一个好习惯! 这里的问题是您在构造函数中打印了一次日期,然后又在 main 中打印了它。删除

System.out.printf("The date for today is %s\n", this);

来自构造函数。然后在main方法里面, 添加

System.out.printf("The date for today is" + tntobject);