1 回答

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
當(dāng)這完成時(shí)Library:
private int capacity;
private Book[] books = new Book[capacity];
super()構(gòu)造函數(shù)中的代碼尚未運(yùn)行(這些初始化在最開(kāi)始 [或在子類之后] 插入到構(gòu)造函數(shù)中)。所以capacity有它的默認(rèn)值,0。后來(lái)你分配給capacity,但為時(shí)已晚。
反而:
public class Library {
private int capacity;
private Book[] books; // *** Don't initialize it here
public Library(int capacity) {
if (capacity > 1) {
this.capacity = capacity;
}
else {
this.capacity = 4;
}
this.books = new Book[this.capacity]; // *** Initialize it here
}
但是這里還有另一個(gè)有用的東西要學(xué)。在遍歷數(shù)組或類似數(shù)組時(shí),使用數(shù)組的大小知識(shí),而不是其他信息源 ( capacity)。所以:
for (int x = 0; x < this.books.length ; ++x) {
// -----------------^^^^^^^^^^^^^^^^^
堅(jiān)持真相的主要來(lái)源。capacity:-)(事實(shí)上,您可能根本不需要您的實(shí)例成員。)
添加回答
舉報(bào)