gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:12:48 26 4
gpt4 key购买 nike

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com