我的构造函数或toString方法没有正常工作

时间:2015-06-06 02:20:19

标签: java constructor tostring

所以我刚刚学会了toString并且我制作了一个程序,用一个字符串显示日期,但是由于某种原因它在我运行之后在下面单独重复日期我得到了:

今天的日期是6/5/15

15年6月5日

public class PAN {

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

  }
}

...

public class TnT {

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

  public TnT(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);
  }
}

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

通过创建某个类的Object,您正在调用构造函数。

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

这一行

因此,为了将其打印出来,您只需写下:

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

答案 2 :(得分:1)

请勿在{{1​​}}内打印。这不是一个好习惯! 这里的问题是你在构造函数中打印一次日期,然后再次在constructor内打印它。

删除

main

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

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