java - 如何编写 for 循环将 "Food"数组分配给名为 "Wolf"的对象?

标签 java foreach

对于我的作业,我被要求完成以下内容:

1. 在 Animal 类中创建第二个名为 eat 的方法。此方法应采用 Food 对象和 Integer 作为参数。

2. 在新的 eat 方法中使用适当的循环将 Food 对象喂给 Animal,次数在 Integer 参数中指定。

到目前为止,我的尝试如下:

import java.util.ArrayList;

public class Wolf extends Carnivore
{

    ArrayList<Food> foodGroup = new ArrayList<>();

    abstract public Food eat(Food x, int b) throws Exception;
    {
        Wolf y = new Wolf();
        ArrayList<Food> foodGroup1 = y.foodGroup;
        addFood(new Food("Chicekn"));
        addFood(new Food("Pork"));
        addFood(new Food("Steak"));
        Wolf wolf1 = new Wolf();

        for (Food x : wolf1.eat(foodGroup1) {

            //How to find out the amount of times x has iterated?
            System.out.println(//print out the amount of times food has bee fed to the wolf);   
    }

    }
public void addFood(Food inFood)
{
  foodGroup.add(inFood);
}
}

我知道尝试可能有很多错误,但我对 Java 仍然很陌生,并且正在学习其他人认为简单的概念。任何有关如何修复此 for 循环以打印出所需结果的帮助将不胜感激,谢谢。

P.s. Wolf 类是 Animal 类的扩展。

最佳答案

也许这就是您正在寻找的:

public void eat(Food food, int count) {
    while (count > 0) {
        addFood(food);
        count--;
    }
}

请注意,由于您正在创建 eat 的实现,因此您不应该声明它abstract。另外,没有理由声明它抛出任何东西,因为实现中没有任何东西抛出异常。 (稍后,如果 count 为负数,您可能想要抛出异常。但是如果您这样做,那么您应该声明抛出某种特定类型异常的方法 - 可能是 IllegalArgumentException ——不是非常广泛的异常(exception)。)

顺便说一句,abstract 声明和分号意味着您的类实际上具有与您想象的完全不同的结构。它实际上有以下成员:

  1. 字段foodGroup
  2. 抽象方法eat(Food,int)l
  3. 实例初始值设定项 block (eat 声明后面的大括号之间的代码);
  4. 方法addFood(Food)

初始化 block 是类顶层的一段代码。如果它前面有 static 关键字,则它是一个静态初始化 block ,并且在类首次加载时执行一次。如果它没有static关键字,那么它是一个实例初始化 block ,编译器会将该 block 的副本添加到每个类构造函数(包括默认构造函数,如果您不声明自己的任何构造函数)。

关于java - 如何编写 for 循环将 "Food"数组分配给名为 "Wolf"的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40797097/

相关文章:

PHP 字符串中的变量 字符串中的变量

php - foreach 循环中的 MySQL 查询

java - 为什么这个 for-each 循环不起作用?

java - 如何在 Java 中验证文本文件内容?

java - 建议 : Making parallel call from my service to another micro service

java - 如何使用 R、Java 和 JRI 绘制图形?

java - Hibernate ManyToOne 保存对象

java - OpenCv 图像转换

r - foreach (R) : suppress Messages from packages loaded from global environment

javascript - Array.prototype.forEach() - 为什么该方法的代码拥有按位移位运算符?