Issue
I'm a begginer doing some exercises on Java OOP so here's my problem.
I have a Book
class with this attribute:
private Author[] authors;
I need a method that returns just the names of those authors(name1,name2,..). The Authors
class has a getName()
method:
public String getName() {
return name;
}
And I tried following code but it doesn't work !
//Method in the Book class
public String getAuthorsNames(){
return authors.getName();
}
Do I need to loop through the array or is there another way ?
Solution
private Author[] authors;
is array of object Author
you need to add the index then get the name, here is an example:
class Author {
private String name;
public Author(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
and in your class Book:
class Book {
private Author[] authors;
public Book(int authorsSize) {
authors = new Author[authorsSize];
}
public void setAuthor(int index) {
this.authors[index] = new Author("Author Name"):
}
public String getAuthorName(int index) {
return this.authors[index].getName();
}
public String getAllAuthors() {
String all = "";
for (int i = 0; i < authors.length; i++) {
all += authors[i].getName() + ", ";
}
return all;
}
}
After adding Authors .. use getAllAuthors
--- more ---
Instead of Author[] authors = new Authors[size];
You can use ArrayList<Author> authors = new ArrayList<>();
then you can use:
authors.add(new Author("Author name1"));
authors.add(new Author("Author name2"));
authors.add(new Author("Author name3"));
authors.add(new Author("Author name4"));
......
Answered By - obeid_s
Answer Checked By - Marilyn (JavaFixing Volunteer)