簡體   English   中英

如何將 object 從一個 class 存儲到另一個 ZA2F2ED4F8EBC2CBB4C21A29DC40AB6 的 arraylist 中

[英]How to I store an object in an arraylist from one class in another class

我正在嘗試將 object 存儲在 arraylist 的一個類(LibraryItem)中的另一個 class(庫)中。 但是當我嘗試將 object 存儲在 arraylist 中時,我遇到了一些問題。

庫 class 需要將 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 應該可以幫助您解決為什么它不起作用?

為了更容易,您可以拆分類,這樣對您來說更具可讀性。

庫項目 Class

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;
    }
}

庫 Class

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 的示例,使用 class 來運行它,然后根據需要進行實例化和填充。

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();
    }
}

這對你有用嗎?

您的代碼中的一切看起來都很好。 也許你忘了初始化 class 庫的變量。 看看這是否有幫助:

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();
        
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM