【问题标题】:How to I store an object in an arraylist from one class in another class如何将对象存储在另一个类中的一个类的数组列表中
【发布时间】:2021-02-18 14:16:27
【问题描述】:

我正在尝试将一个对象存储在另一个类 (Library) 中的一个类 (LibraryItem) 的数组列表中。但是当我尝试将对象存储在数组列表中时遇到了一些问题。

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

【问题讨论】:

    标签: java arrays arraylist


    【解决方案1】:

    您是否尝试过使用调试器单步调试以查看其崩溃的位置,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();
        }
    }
    

    这对你有用吗?

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多