java—将int传递给另一个类所包含的类

vlf7wbxs  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(316)

我对面向对象编程非常陌生,我想知道是否有可能将int传递给另一个类所包含的类。我的代码可以编译,但是当我在main中运行printlist时,itemid永远不会被打印出来。
这是我的arraylist类

import java.util.ArrayList;
public class ItemList{
    int itemListID
    String itemName;
    ArrayList<Item> itemList = new ArrayList<>();

    public ItemList(String name, int listID) {
        itemName = name;
        itemListID = listID
    }
    public void addItem(String name, double weight, double price){
        itemList.add(new Item(name,weight,price));
    }
    public int getItemListID(){
        return itemListID;
    }
    public void printItems(){
        for(int i=0; i < itemList.size(); i++){
            System.out.println(itemList.get(i));
        }
    }
}

以下是arraylist中包含的项类

public class Item {
    String name;
    double weight;
    double price;
    int itemListID;

    public Item(String itemName,double itemWeight, double itemPrice){
        this.name = itemName;
        this.weight = itemWeight;
        this.price = itemPrice;
    }
    public int setItemListID(){
        itemListID = ItemList.getItemListID();
    }

    public String toString(){
        return(name + " has a weight of " + weight + " and a price of " + price + "item is in itemlist"
        + itemListID);
    }    
}

这是主要问题

public class HopefulShopMain{
    public static void main (String[] args){
         ItemList myList = new ItemList("Fruit",1);

         myList.addItem("Apple", 100, 60);
         myList.addItem("Banana", 118, 50);

         myList.printItems();
    }
}
bt1cpqcv

bt1cpqcv1#

想知道是否可以将int传递给另一个类所包含的类
对。这可以在不同的级别(构造函数或方法)以不同的方式完成。
在您的示例中,可以将itemlistid传递到项的构造函数中:

public void addItem(String name, double weight, double price){
        itemList.add(new Item(name,weight,price,this.itemListID));
    }

然后您的item类可以将该值保存在字段中,就像它在构造函数中获取的其他值一样。

public class Item {
    String name;
    double weight;
    double price;
    int itemListID;

    public Item(String itemName,double itemWeight, double itemPrice, int itemListID){
        this.name = itemName;
        this.weight = itemWeight;
        this.price = itemPrice;
        this.itemListID = itemListID;
    }

    public String toString(){
        return(name + " has a weight of " + weight + " and a price of " + price + "item is in itemlist"
        + itemListID);
    }    
}

或者,你可以通过整个考试 ItemList 这样它就可以引用 ItemList 上面有
或者你可以 Item 内部的(非静态)嵌套类 ItemList ,因此它可以直接引用字段。这在您的情况下可能是合适的,因为看起来您只期望 Item 将由 ItemList 类本身。

import java.util.ArrayList;
public class ItemList{
    int itemListID
    String itemName;
    ArrayList<Item> itemList = new ArrayList<>();

    public ItemList(String name, int listID) {
        itemName = name;
        itemListID = listID
    }
    public void addItem(String name, double weight, double price){
        itemList.add(new Item(name,weight,price));
    }
    public int getItemListID(){
        return itemListID;
    }
    public void printItems(){
        for(int i=0; i < itemList.size(); i++){
            System.out.println(itemList.get(i));
        }
    }
    class Item {
        String name;
        double weight;
        double price;

        public Item(String itemName,double itemWeight, double itemPrice){
            this.name = itemName;
            this.weight = itemWeight;
            this.price = itemPrice;
        }

        public String toString(){
            return(name + " has a weight of " + weight + " and a price of " + price + "item is in itemlist"
            + ItemList.this.itemListID);
        }    
    }
}

相关问题