2017-02-23 83 views
1

我似乎被困在如何使用无参数构造函数添加到数组中。我在这里失踪的是什么?使用无参数构造函数添加到数组

public class Book { 
private String title; 
private String author; 
private int pages; 
private double price; 
public static int numBooks = 0; 


public Book(String title, String author, int pages, double price) { 
    super(); 
    this.title = title; 
    this.author = author; 
    this.pages = pages; 
    this.price = price; 
    numBooks++; 
} 
public Book() { 
    super(); 
    numBooks++; 
} 

public String getTitle() { 
    return title; 
} 

public void setTitle(String title) { 
    this.title = title; 
} 

public String getAuthor() { 
    return author; 
} 

public void setAuthor(String author) { 
    this.author = author; 
} 

public int getPages() { 
    return pages; 
} 

public void setPages(int pages) { 
    this.pages = pages; 
} 

public double getPrice() { 
    return price; 
} 

public void setPrice(double price) { 
    this.price = price; 
} 

@Override 
public String toString() { 
    return "book [title=" + title + ", author=" + author + ", pages=" + pages + ", price=" + price + "]"; 
} 

public static int getNumBooks(){ 
    return numBooks; 
} 

这是我遇到很多麻烦的地方。我有我的主要和低于它我有我的无arg构造函数,我无法弄清楚如何添加数组在main中。任何正确的方向建议或指针都会很棒。

}

public class TestBook { 
private String title; 
private String author; 
private int pages; 
private double price; 

public TestBook(String title, String author, int pages, double price){ 
    this.title = title; 
    this.author = author; 
    this.pages = pages; 
    this.price = price; 
} 

public static void main(String[] args) { 

    Book[] bookArray = new Book[6]; //This is the array that I am trying to add the last two books too 

    Book bookArray0 = new Book("Java Proramming", "Liang", 1320, 145.00); 
    Book bookArray1 = new Book("Horton Hears a Who", "Dr. Seuss", 72, 19.99); 
    Book bookArray2 = new Book("The Hobbit", "Tolkien", 320, 9.25); 
    Book bookArray3 = new Book("Born a Crime", "Noah", 304, 17.33); 
    Book bookArray4 = new Book(); 
    Book bookArray5 = new Book(); 

    bookArray[0] = bookArray0; 
    bookArray[1] = bookArray1; 
    bookArray[2] = bookArray2; 
    bookArray[3] = bookArray3; 
    bookArray[4] = bookArray4; 
    bookArray[5] = bookArray5; 


    for(Book d : bookArray) 
     System.out.println(d); 


} 

public TestBook() { //This is the no-arg that I am trying to use to add to the array above. 
    Book[] bookArray = new Book[6]; 
    Book bookArray4 = new Book("The Town", "Chuck Hogan", 477, 14.99); 
    Book bookArray5 = new Book("The Pretender ", "Sombody", 400, 24.99); 
    bookArray[4] = bookArray4; 
    bookArray[5] = bookArray5; 

    for(Book b : bookArray) 
     System.out.println(b); 

    } 

public void finishArray(){ 
Book lastBook = new Book(); 
lastBook.setTitle(title); 
lastBook.setAuthor(author); 
lastBook.setPages(pages); 
lastBook.setPrice(price); 

} 

}

+0

顺便说一句,有没有必要调用'super'。这是隐含的。 – Li357

+0

那到底是什么问题呢? – Mureinik

+0

我似乎无法将最后两本书添加到数组中。数组只是打印出null而不是我想要添加的两本书。 – Boomboxcity

回答

0

你越来越空,因为你没有设置数据对这些对象。这就是setTitle和setAuthor的作用。所以像

bookArray4.setTitle("The Town"); 
    bookArray4.setAuthor("Somebody"); 

当你使用一个构造函数传递信息这些东西被设置在它。但是没有参数的构造函数没有数据传递给它。所以你用你的“Setter”方法来设置数据

0

As Sean Reaves指出,你需要使用你的setter来创建用默认构造函数创建的书籍。

public class Book { 
    private String title; 
    private String author; 
    private int pages; 
    private double price; 
    private static int numBooks = 0; 

    public Book(String title, String author, int pages, double price) { 
     this(); 
     this.title = title; 
     this.author = author; 
     this.pages = pages; 
     this.price = price; 
    } 

    public Book() { 
     numBooks++; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getAuthor() { 
     return author; 
    } 

    public void setAuthor(String author) { 
     this.author = author; 
    } 

    public int getPages() { 
     return pages; 
    } 

    public void setPages(int pages) { 
     this.pages = pages; 
    } 

    public double getPrice() { 
     return price; 
    } 

    public void setPrice(double price) { 
     this.price = price; 
    } 

    @Override 
    public String toString() { 
     return "book [title=" + this.title + ", author=" + this.author + ", pages=" + this.pages + ", price=" + this.price + "]"; 
    } 

    public static int getNumBooks() { 
     return numBooks; 
    } 
} 

我做你的代码一些小的改动,仅仅为了收拾了一点东西。

主要

import java.util.Arrays; 

public class Main { 
    public static void main(String[] args) { 
     // All books 
     Book[] books = new Book[] { 
      new Book("Java Proramming", "Liang", 1320, 145.00), 
      new Book("Horton Hears a Who", "Dr. Seuss", 72, 19.99), 
      new Book("The Hobbit", "Tolkien", 320, 9.25), 
      new Book("Born a Crime", "Noah", 304, 17.33), 
      new Book(), 
      new Book() 
     }; 

     // Use setters to avoid null values 
     books[5].setAuthor("Not Null Author"); 
     books[5].setTitle("Not Null Title"); 

     // Print 
     Arrays.asList(books).forEach(System.out::println); 
    } 
} 

你可以打电话给你的setter方法pricepages属性为好。

输出

book [title=Java Proramming, author=Liang, pages=1320, price=145.0] 
book [title=Horton Hears a Who, author=Dr. Seuss, pages=72, price=19.99] 
book [title=The Hobbit, author=Tolkien, pages=320, price=9.25] 
book [title=Born a Crime, author=Noah, pages=304, price=17.33] 
book [title=null, author=null, pages=0, price=0.0] 
book [title=Not Null Title, author=Not Null Author, pages=0, price=0.0]