JAVA,试图用arraylist总结对象中“重量”的整数值

好的,所以我试图将 arraylist 中对象的权重相加,我遇到了这段代码的问题。该程序给我错误调用“不兼容的类型:对象无法转换为项目”我试图找到解决方案但找不到任何有用的东西。也是的,该项目正在从 .getWeight 返回一个 int


int totalWeight = 0;

if (!(items.isEmpty())){

    for (Item i: items){

        totalWeight += i.getWeight();

    }

    return totalWeight;

}

return 0;

让我提供整个代码以供进一步调查。


导入 java.util.ArrayList;


public class Packet {

    private ArrayList items;


    public Packet(){

        ArrayList<Item> items = new ArrayList<>();

    }

    public void addItem(Item item){

        items.add(item);

    }

    public int totalWeight(){

        int totalW = 0;

        if (!(items.isEmpty())){

            for (Item i: items){

                totalW += i.getPaino();

            }

            return totalW;

        }

        return 0;

    }

}

编辑:: 项目类


public class Item {

    private String name;

    private int weight;


    public Item(String name, int weight){

        this.weight = weight;

        this.name = name;

    }

    public String getName(){

        return this.name;

    }

    public int getWeight(){

        return this.weight;

    }


    @Override

    public String toString(){

        return this.name + " (" + this.weight + " kg)";

    }

}


繁星coding
浏览 123回答 3
3回答

开心每一天1111

此外,在声明新集合时使用接口类型是一种很好的做法。例如,您的项目列表应该这样声明:private&nbsp;List<Item>&nbsp;items&nbsp;=&nbsp;new&nbsp;ArrayList<>();原因很简单——通过使用接口类型声明集合,代码会更加灵活,因为您可以在需要时轻松更改具体实现。我的意思是,例如,您可以轻松地将ArrayList更改为LinkedList。

眼眸繁星

在您的类 Packet 中,您必须以这种方式声明项目:private&nbsp;ArrayList&nbsp;<Item>&nbsp;items;目前您正在创建对象项目,现在您将创建项目对象列表。

喵喵时光机

您的问题在这里private ArrayList items;您应该<>与 arrayList 一起使用。private&nbsp;ArrayList<Item>&nbsp;items;没有<>原始类型什么是原始类型,我们为什么不使用它?在运行时,您items将等于ArrayList<Object>.&nbsp;这就是为什么你得到Object cannot be converted to Item
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java