好的,所以我制作了一个名为Food
的物体,它具有描述食物(蛋白质(克),卡路里,碳水化合物等)的各种特性。然后我创建了一个名为Foodlist
的类,它读取excel表,为电子表格的每一行创建一个新的Food
对象(用该行的列中的信息填充对象);然后Foodlist
类创建一个ArrayList
食物对象。
我现在想要制作ProteinList
,这是FoodList
的子列表,并且有一种方法可以将所有高蛋白食物分成阵列。 Proteinlist
扩展Foodlist
,如何访问列表中Food对象的“protein”属性?
这是我的代码被卡住的地方:
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;
}
答案 0 :(得分:0)
public class ProteinList extends FoodList{
//other stuff...
public double get(int i){
return super.get(i).getProtein();
)
}
这就是你想要的吗?
答案 1 :(得分:0)
如果属性protein
在类定义中定义为private
,则无法从类外的任何方法访问它。您需要在类中定义一个getter方法:
public class Food {
...
public int getProtein() {
return protein;
}
....
}
因此,您可以从类外的方法中读取值:
foodList.get(i).getProtein()
我假设foodList
已正确定义,因此get(i)
方法将返回一个Food
对象(或者它要返回的任何类)
答案 2 :(得分:0)
如果你的protein
财产有一个吸气剂,你的方法可能是:
public Food[] groupProtein() {
for(Food food : foodList)
{
if(food.getProtein() > 6){
proteinFoods.add(food);
}
}
return proteinFoods.toArray(new Food[0]);
}
我认为proteinFoods
是List<Food>
...对吗?