2015-12-19 2 views
0

У меня есть проект домашней работы, который требует от меня написать класс с двумя конструкторами. В этом классе я хочу определить метод toString(). Я хочу убедиться, что метод toString() определен независимо от того, какой конструктор использовался, поэтому я добавил его в свой класс дважды, один раз для каждого конструктора. Но теперь компилятор жалуется на это, говоря мне, что toString() определяется дважды. Так в чем проблема? Как я могу убедиться, что все мои объекты получают метод toString() независимо от того, какой конструктор используется?Проблемы с конструктором

public class LibraryRecord{ 
    public LibraryRecord(String title, String author, int lccn, String publisher, String date, boolean out){ 
     BookTitle = title; 
     BookAuthor = author; 
     BookLCCN = lccn; 
     BookPublisher = publisher; 
     BookDate = date; 
     BookAvailable = out; 
    } 

    public boolean getBookAvailability(){ 
     return BookAvailable; 
    } 


    public String toString(){ 
     return "Title: "+ BookTitle; 
     return "Author: " + BookAuthor; 
     return "LCCN: " + BookLCCN; 
     return "Publisher: " + BookPublisher; 
     return "Date" + BookDate; 
     return "Available: " + BookAvailable; 
    } 

    public LibraryRecord(String title, String author, int lccn, String publisher, String date){ 
     BookTitle = title; 
     BookAuthor = author; 
     BookLCCN = lccn; 
     BookPublisher = publisher; 
     BookDate = date; 
     boolean BookAvailable = true; 
    } 

    public String toString(){ 
     return "Title: "+ BookTitle; 
     return "Author: " + BookAuthor; 
     return "LCCN: " + BookLCCN; 
     return "Publisher: " + BookPublisher; 
     return "Date" + BookDate; 
     return "Available: " + BookAvailable; 
    } 

    private String BookTitle; 
    private String BookAuthor; 
    private int BookLCCN; 
    private String BookPublisher; 
    private String BookDate; 
    private boolean BookAvailable; 
} 
+1

Эти вопросы не имеют абсолютно никакого отношения к конструкторам. – Tom

+2

Существует два метода для метода toString(). Вот почему вы получаете эту ошибку – Naruto

+0

Вы получили необходимую информацию? Вы поняли? Или еще есть что-то, что вы не понимаете по этому поводу? –

ответ

1

Это не имеет ничего общего с конструкторами, вы определяете один и тот же метод дважды в классе, и это не перегруженный метод. поэтому компилятор жалуется. Также обратите внимание, что оба метода имеют незаконный синтаксис с несколькими операторами возврата.

public String toString(){ 
    return "Title: "+ BookTitle; 
    return "Author: " + BookAuthor; 
    return "LCCN: " + BookLCCN; 
    return "Publisher: " + BookPublisher; 
    return "Date" + BookDate; 
    return "Available: " + BookAvailable; 
} 
1

Вы

public String toString(){ 
    return "Title: "+ BookTitle; 
    return "Author: " + BookAuthor; 
    return "LCCN: " + BookLCCN; 
    return "Publisher: " + BookPublisher; 
    return "Date" + BookDate; 
    return "Available: " + BookAvailable; 
} 

дважды.

Не только вы должны удалить один из них, вы не можете иметь несколько операторов return один за другим, так как все утверждения после первого оператора возврата являются недостижимым кодом.

Изменить его

public String toString(){ 
    return "Title: "+ BookTitle + 
    "Author: " + BookAuthor + 
    "LCCN: " + BookLCCN + 
    "Publisher: " + BookPublisher + 
    "Date" + BookDate + 
    "Available: " + BookAvailable; 
} 

EDIT:

Это не имеет значения, сколько у вас есть конструкторы. У вас может быть только один метод toString().

P.S. Один из ваших конструкторов есть ошибка, так как он объявляет локальную переменную вместо изменения переменного экземпляра:

public LibraryRecord(String title, String author, int lccn, String publisher, String date){ 
    BookTitle = title; 
    BookAuthor = author; 
    BookLCCN = lccn; 
    BookPublisher = publisher; 
    BookDate = date; 
    boolean BookAvailable = true; // change this line to BookAvailable = true; 
} 
+0

Спасибо, но в упражнении я должен построить два разных конструктора, 1-й вход 6 вещей 2-й входы 5 и устанавливает 6-й как истинный! Я хочу иметь метод toString для обоих из них! как я могу это сделать? –

+0

@KritonGeorgiou См. Редактирование – Eran

1

не написать несколько операторов возврата для метода ToString().

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