如何将一个类中的对象存储在另一个类的数组列表中



我试图从一个类(LibraryItem)在另一个类(Library)的数组列表中存储对象。但是我有一些问题,当我试图在数组列表中存储对象。

Library类需要将LibraryItem存储在一个数组列表中,并打印存储在其中的所有项

LibraryItem代码

public class LibraryItem
{

private String title;
private String itemCode;
private int cost;
private int timesBorrowed;
private boolean onLoan;
/**
* Constructor for objects of class LibraryItem
*/
public LibraryItem(String title, String itemCode, int cost, int timesBorrowed, boolean onLoan)
{
// initialise instance variables
this.title = title;
this.itemCode = itemCode;
this.cost = cost;
this.timesBorrowed = timesBorrowed;
this.onLoan = onLoan;
```
**code for Libray**
```
public class Library
{
// instance variables - replace the example below with your own
private ArrayList<LibraryItem> itemList;
/**
* Constructor for objects of class Library
*/
public Library()
{
// initialise instance variables
itemList = new ArrayList<LibraryItem>();

}
public void storeItem(LibraryItem libraryItem){

itemList.add(libraryItem);

}

public void printAllItems(){

for (LibraryItem ob : itemList){

System.out.println("The Library item ");
System.out.println("Title: "+ ob.getTitle());
System.out.println("Code: "+ ob.getItemCode());
System.out.println("Code: "+ ob.getCost());
System.out.println("Code: "+ ob.getTimesBorrowed());
System.out.println("Code: "+ ob.getOnLoan());
System.out.println("-----------------------------------");


}

}
}

您是否尝试过通过调试器查看它落在哪里,IDE应该帮助您解决很多关于为什么它不工作的问题?

为了使它更容易,你可以把类分开,这样对你来说更容易读。

LibraryItem类

public class LibraryItem {
private String title;
private String itemCode;
private int cost;
private int timesBorrowed;
private boolean onLoan;
public LibraryItem(String title, String itemCode, int cost, int timesBorrowed, boolean onLoan) {
this.title = title;
this.itemCode = itemCode;
this.cost = cost;
this.timesBorrowed = timesBorrowed;
this.onLoan = onLoan;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getItemCode() {
return itemCode;
}
public void setItemCode(String itemCode) {
this.itemCode = itemCode;
}
public int getCost() {
return cost;
}
public void setCost(int cost) {
this.cost = cost;
}
public int getTimesBorrowed() {
return timesBorrowed;
}
public void setTimesBorrowed(int timesBorrowed) {
this.timesBorrowed = timesBorrowed;
}
public boolean isOnLoan() {
return onLoan;
}
public void setOnLoan(boolean onLoan) {
this.onLoan = onLoan;
}
}

库类

import java.util.ArrayList;
public class Library {
private ArrayList<LibraryItem> itemList;
public Library(ArrayList<LibraryItem> itemList) {
this.itemList = itemList;
}
public void printAllItems() {
for (LibraryItem ob : itemList) {
System.out.println("The Library item ");
System.out.println("Title: " + ob.getTitle());
System.out.println("ItemCode: " + ob.getItemCode());
System.out.println("Cost: " + ob.getCost());
System.out.println("TimesBorrowed: " + ob.getTimesBorrowed());
System.out.println("OnLoan: " + ob.isOnLoan());
System.out.println("- - - - - - - - - -");
}
}
public void storeItem(LibraryItem libraryItem) {
itemList.add(libraryItem);
}
}

按照Lucas的例子,一个类来运行它,然后根据需要实例化和填充。

import java.util.ArrayList;
public class Application {
public static void main(String[] args) {
Application application = new Application();
application.run();
}
public void run() {
ArrayList<LibraryItem> libraryItemList = new ArrayList<>();
// with your constructor presumably you want to pass in an already populated list of LibraryItems
LibraryItem i1, i2, i3;
i1 = new LibraryItem("aa", "code01", 100, 2, true);
i2 = new LibraryItem("bb", "code02", 200, 1, true);
i3 = new LibraryItem("cc", "code03", 300, 3, true);
libraryItemList.add(i1);
libraryItemList.add(i2);
libraryItemList.add(i3);
Library library = new Library(libraryItemList);
library.printAllItems();
// add additional LibraryItems not in the original list
LibraryItem i4 = new LibraryItem("dd", "code04", 400, 4, true);
library.storeItem(i4);
library.printAllItems();
}
}

这个对你有用吗?

代码中一切看起来都很好。也许您忘记了初始化类库的变量。看看是否有帮助:

public class mainApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
LibraryItem i1, i2, i3;
Library library;
i1 = new LibraryItem("aa", "code01", 100, 2, true);
i2 = new LibraryItem("bb", "code02", 200, 1, true);         
i3 = new LibraryItem("cc", "code03", 300, 3, true);
library = new Library(); //Did you inicialize this variable?
library.storeItem(i1);
library.storeItem(i2);
library.storeItem(i3);
library.printAllItems();

}
}

最新更新