1

私は本のクラスを持っています。リストの最後に要素を追加したい

public class Book {
private String title;
private String authorName;
private double price;


/**
 * @param title
 * @param authorName
 * @param price
 */
public Book(String title, String authorName, double price) {
    setTitle(title);
    setAuthorName(authorName);
    setPrice(price);
}

public String getTitle() {
    return title;
}

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

public String getAuthorName() {
    return authorName;
}

public void setAuthorName(String authorName) {
    this.authorName = authorName;
}

public double getPrice() {
    return price;
}

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

}

そして、本をリストに追加するメソッドappendを持つBooklistクラスですが、リストに値を入力する方法を理解することができません

public class BookList {

/**
 * books will be stored in an array of strings
 */

private Book[] books;
// *** TODO *** you will need to add more private members variables

public BookList(int N) {
    // TODO Auto-generated method stub  
}



public void append(Book book) throws BookListFull {
    // TODO Auto-generated method stub 
}

}

リストの最後に要素を追加したいのですが、その方法を教えてください。

4

6 に答える 6

1

1.配列の代わりにJavaのコレクションフレームワークを使用することをお勧めします。

2.コレクションは多くの柔軟性と方法を提供するので、より表現力豊かな方法でデータを処理できます。

List<Book> list = new ArrayList<Book>;

例えば:

     List<Book> list = new ArrayList<Book>;

     list.add(new Books(title, authorName, price));
于 2012-07-27T11:08:30.787 に答える
1

List<Book>Book 配列の代わりに aを使用します。リストは必要に応じて自動的に拡張されます。詳細については、コレクションのチュートリアルを参照してください。

また、コード内のコメントを修正します。

/**
 * books will be stored in an array of strings <-- of strings?
 */
private Book[] books;
于 2012-07-27T10:36:19.623 に答える
1
public class BookList {
  List<Book> bookList= new ArrayList<Book>();

  ...
  ...
  public void append(Book book) throws BookListFull {
    bookList.add(book); 
  }
}
于 2012-07-27T10:34:26.637 に答える
0

これを試して:

public void append(Book book) {
    Book[] buf = this.books;
    this.books = new Book[this.books.length + 1];
    for(int i = 0; i < buf.length; i++)
        this.books[i] = buf[i];
    this.books[buf.length + 1] = book;
}
于 2012-07-27T10:36:34.553 に答える
0

を使用できない場合はList<Book>、既存の配列を新しい配列にコピーする必要がありますbooks.length +1

public void append(Book book) throws BookListFull {
    Book[] newArray = new Book[books.length + 1];
    for(int i = 0; i < books.length; i++){
        newArray[i] = books[i];
    }
    newArray[books.length] = book;
    books = newArray;
}

または、より簡単に、Listおよび そのadd()およびremove()メソッドを使用します。

于 2012-07-27T10:34:58.477 に答える
0

Book[] ブックのタイプを何らかの理由で変更できない場合 (コンストラクターで最大サイズを指定しているようです):

  public void append(Book book) throws BookListFull {

    for (int i = 0; i < this.books.length; i++) {
        if (null == this.books[i]) {
            this.books[i] = book;
            return;
        }
    }
    throw new BookListFull();

}

おそらく、例外の名前を BookListFullException などに変更する必要があります-私の2セントだけです。

于 2012-07-27T10:45:48.783 に答える