如何在类中编写方法

时间:2013-11-08 17:16:23

标签: class object methods comparison

我需要帮助知道如何编写一个语句,如“如果已经设置然后这样做”这种方法。例如,我写了一篇作者和一本书类。在我的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
}

3 个答案:

答案 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.
}