0

好的,所以我制作了一个名为的对象Food,它具有描述食物的各种属性(蛋白质(以克为单位)、卡路里、碳水化合物等)。然后我创建了一个名为的类Foodlist,它读取一个 excel 表,Food为电子表格的每一行创建一个新对象(用该行列中的信息填充对象);然后Foodlist该类创建一个ArrayListFood 对象。我现在想做一个ProteinList,它是一个子列表,FoodList并且有一种方法可以将所有高蛋白食物分成一个数组。Proteinlistextends Foodlist,如何访问列表中 Food 对象的“蛋白质”属性?

这是我的代码卡住的地方:

    public Food[] groupProtein() {
        for(int i = 0; i < foodList.size(); i++)
        {
            if(foodList.get(i).protein > 6){//HERE IS THE PROBLEM, trying to get the property of the food object at i
                proteinFoods.add(foodList.get(i));
            }
        }

        Food[] temp = new Food[proteinFoods.size()];
        for (int i = 0; i < temp.length; i++) {
            temp[i] = proteinFoods.get(i);
        }

        return temp;
    }
4

3 回答 3

0
public class ProteinList extends FoodList{
    //other stuff...
    public double get(int i){
        return super.get(i).getProtein();
    )
}

这就是你想要的吗?

于 2013-01-22T00:04:35.997 回答
0

如果该属性在您的类protein定义private中定义,您将无法从类外的任何方法访问它。你需要你的类中定义一个 getter 方法:

public class Food {
    ...
    public int getProtein() {
        return protein;
    }
    ....
}

因此,您可以从类外的方法中读取值:

foodList.get(i).getProtein()

我假设这foodList是正确定义的,所以该get(i)方法将返回一个Food对象(或它要返回的任何类)

于 2013-01-22T00:06:57.147 回答
0

如果您的protein财产有吸气剂,您的方法可能是:

public Food[] groupProtein() {
    for(Food food : foodList)
    {
        if(food.getProtein() > 6){
            proteinFoods.add(food);
        }
    }

    return proteinFoods.toArray(new Food[0]);
}

我想proteinFoodsList<Food>……对吧?

于 2013-01-22T08:53:32.953 回答