我需要帮助知道如何编写一个语句,如“如果已经设置然后这样做”这种方法。例如,我写了一篇作者和一本书类。在我的Book类中,我需要一个返回书名的方法。但是,如果已经设置了本书的作者(即Book中有一个设置作者的方法),则返回书名和作者姓名。
这是我的这些类的一些代码
public class Author{
String authorFirstName;
String authorLastName;
int authorBirth;
int authorDeath;
//creates a new author object with nothing set
public Author(){
}
//String l=last name, String f=frist name
//creates new author object by setting the last and first name
public Author(String l, String f){
authorLastName=l;
authroFirstName=f;
}
//end of Author class
}
public class Book{
int bookYearPublish;
Author bookAuthor;
String bookNumberISBN;
String bookTitle;
public Book(){
}
//String t is the title of the book
//creats a Book object with a title
public Book(String t){
bookTitle=t;
}
//String t is the title of the book
//Author a is the author of the book
//creats a Book object with a title and author
public Book(String t, Author a){
bookTitle=t;
bookAuthor=a;
}
//Author a is the author that will be set for the Book
//sets the author of the book
public void setAuthor(Author a){
bookAuthor=a;
}
//returns the Author of the Book
public Author getAuthor(){
return bookAuthor;
}
//returns the title of Book
//if the author is known returns a String in the form of title. last name, first name of author
//if the year is known returns a String in the form title (year). last name, first name of author
public String toString(){
String title=bookTitle;
if(bookAuthor.equals(this.getAuthor())){//I am getting a NullPointException here so this is where my problem is
title=title+". "+bookAuthor;
}
if(bookYearPublish.equals(this.getYear())){
title=bookTitle+" ("+bookYearPublish+"). "+bookAuthor;
}
return title;
}
//ends class Book
}
答案 0 :(得分:0)
用这样的东西写一个getTitle()方法(就像getAuthor一样)
public string getTitle()
{
String s = this.title;
if(author != "" || author != null)
{
s+=this.author;
}
return s;
}
答案 1 :(得分:0)
而不是:
if(bookAuthor.equals(this.getAuthor())){
把
if(bookAuthor != null && bookAuthor.equals(this.getAuthor())){
但是,我认为这不是你想要的...... this.getAuthor()
返回bookAuthor
所以它应该始终匹配......我认为你真正想要的是:
if( bookAuthor != null) {
title=title+". "+bookAuthor;
}
答案 2 :(得分:0)
在setAuthor(Author a)
中设置作者后,尝试执行您想要执行的操作:
public void setAuthor(Author a){
bookAuthor=a;
// put the action here.
}