2015-06-06 5 views
-5

Так что я только что узнал о toString, и я сделал программу для отображения даты со строкой, в которой указана дата, но по какой-то причине она повторяет дату отдельно под ней после ее запуска. получить:Мой конструктор или метод toString не работает должным образом

дата на сегодняшний день является 6/5/15

6/5/15

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); 
    } 
} 
+0

Что вы думаете 'System.out.printf (...)' в ваш конструктор делает? –

+0

Что вы думаете 'System.out.println (tntobject);' делает? –

+0

У вас есть вызов 'printf' в вашем конструкторе и вызов' println' в вашем главном. –

ответ

2

Удалить System.out.printf("The date for today is %s\n", this); из вашего конструктора и изменить оператор печати в main() в System.out.printf("The date for today is ", tntobject);

+0

Когда вы уже печатаете дату в конструкторе 'public TnT()', нет необходимости печатать его снова в 'main()'. Лично я предлагаю вам напечатать дату из 'main()', поскольку мы обычно используем конструктор только для инициализации значений. – Greenhorn

1

Создав объект определенного класса, которому вы звоните конструктор.

В этом случае constuctor уже имеет линию System.out.print (// code);

Так что для того, чтобы напечатать его просто написать:

TnT тнт = новый TnT (5,6,7);

1

Не печатайте внутри constructor. Это не очень хорошая практика! Проблема заключается в том, что вы печатаете дату внутри конструктора один раз, и вы снова печатаете ее внутри main. Удалите

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

из конструктора. Тогда внутри основного метода, добавить

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

Смежные вопросы