我可以构建一个对象数组,该对象数组可以存储所需数量的对象并进行打印。
我已经声明了一个初始数组来存储对象,如果超出了初始限制,则创建一个更大的将元素从数组a移到b的动作
public class SetofBooks {
private int iLimit;
private Book[] books;
private int c=0;
private int t=1;
Book[] nbooks;
private String s="";
public SetofBooks (int i) {
iLimit=i;
books=new Book[iLimit];
}
public boolean addBook(Book b) {
if (c>=iLimit) {
nbooks=new Book[c+1];
while (t!=0) {
for (int i=0;i<books.length;++i)
nbooks[i]=books[i];
t=0;
}
for (int i=0;i<c;i++)
if (b.equals(nbooks[i]))
return false;
nbooks[c]=b;
c++;
returns true;
}
books[c]=b;
for(int i=0;i<c;i++)
if(books[i].equals(books[c]))
return false;
c++;
return true;
}
public String toString() {
if (c>=iLimit)
for(int i=0;i<c;i++)
s+=nbooks[i] + " ";
else
for (int j=0;j<c;j++)
s+=books[j] + " ";
return s;
}
}
当我尝试打印对象数组时,它只打印最后一个元素而其余元素为null的页面。
在Java中,数组的大小一旦定义就无法更改。因此,要获得所需的功能,我建议使用Java Collections ArrayList。
import java.util.ArrayList; // import the ArrayList class
class Main {
public static void main(String[] args) {
Book book1 = new Book("Harry Potter", 11);
Book book2 = new Book("Star Wars", 32);
ArrayList<Book> books = new ArrayList<Book>(); // Create an ArrayList object
books.add(book1);
books.add(book2);
for(Book b : books) {
System.out.println(b.getName());
}
}
}
class Book {
private String name;
private int age;
public Book(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
因为如果您需要一个简单的数组类型来动态调整大小,那么您要做的步骤是:
此逻辑改为在ArrayList类型内处理。