Java 将一个对象放入另一个对象数组中的和对象数组中

Java 将一个对象放入另一个对象数组中的和对象数组中,java,Java,所以我对编码/Java是新手,我正在从事这个项目。我的任务是创建3个不同的类,我在这里,使他们合作。我已经成功地使我的FishTankManagerApp类检索到一个新的Fish对象,我正在尝试找出如何将其放入FishTank对象中 我的FishTank类只是用来创建一个可以容纳5条鱼的数组对象,我想我做得对。在我的FishTankManagerApp类中,我创建了一个包含10个FishTank对象的数组 我一生都无法解决的问题是,在创建鱼对象之后,如何将鱼对象放置到特定的鱼缸对象中?我在代码末

所以我对编码/Java是新手,我正在从事这个项目。我的任务是创建3个不同的类,我在这里,使他们合作。我已经成功地使我的FishTankManagerApp类检索到一个新的Fish对象,我正在尝试找出如何将其放入FishTank对象中

我的FishTank类只是用来创建一个可以容纳5条鱼的数组对象,我想我做得对。在我的FishTankManagerApp类中,我创建了一个包含10个FishTank对象的数组

我一生都无法解决的问题是,在创建鱼对象之后,如何将鱼对象放置到特定的鱼缸对象中?我在代码末尾记下了遇到问题的地方

基本上我知道我正在尝试将我创建的一个对象放在一个数组中,该数组包含另一个可以存储鱼对象的数组。。。我想

任何帮助都将不胜感激!谢谢大家!

import java.util.Scanner;

public class Fish {

    private static Scanner stdin = new Scanner(System.in);
    private String userInput;
    private int userInput2;
    public boolean mean;
    public String name;

    public Fish(){      
        System.out.println("What is your fishes name?");

        userInput = stdin.next();
        this.name = userInput;

        System.out.println("Is this fish aggressive?\n"+
                           "(1)Yes\n(2)No");

        userInput2 = stdin.nextInt();
        if (userInput2 == 1)
            this.mean = true;
        else
            this.mean = false;
    }
}

我建议您在鱼缸中添加一种方法,使添加鱼变得简单。也许是这样的:

public FishTank(){

    private Fish[] tank = new Fish[5];

    public boolean addFish(Fish fish) {
        // ... add code here to put the fish to the tank array
        // return true if there was room in the tank, false otherwise
    }
}
请注意,tank变量现在是私有的。在Java中保持成员变量的私有性并使用方法访问它们通常是一个好主意

然后,在您得到您提到的注释的地方,您可以调用新方法:

boolean addedSuccessfully = tanks[userInput].addFish(fish);

您可能不需要像我所显示的那样返回布尔值,但是如果您需要检查数组(即,鱼缸是否有容纳新鱼的空间),它可能会很方便。

我建议您向鱼缸添加一种方法,以使添加鱼变得简单。也许是这样的:

public FishTank(){

    private Fish[] tank = new Fish[5];

    public boolean addFish(Fish fish) {
        // ... add code here to put the fish to the tank array
        // return true if there was room in the tank, false otherwise
    }
}
请注意,tank变量现在是私有的。在Java中保持成员变量的私有性并使用方法访问它们通常是一个好主意

然后,在您得到您提到的注释的地方,您可以调用新方法:

boolean addedSuccessfully = tanks[userInput].addFish(fish);

您可能不需要像我所显示的那样返回布尔值,但如果需要检查数组(即水箱是否有容纳新鱼的空间),它可能会很方便。

目前,您要做的是将FishTank对象设置为等于fish实例,而不是将其添加到FishTank内部的tank变量中

现在,您无法访问FishTank类内部的tank变量。您需要做的是使其成为一个全局变量,并提供访问器/修饰符方法。例如:

public class FishTank {

private Fish[] tank;
private int numFish;

public FishTank(){

    this.tank = new Fish[5];
    this.numFish = 0;

}

public void add(Fish f){
    if(this.numFish >= 5){
        //handle "tank is full" case
    }
    else{
        numFish++;
        this.tank[numFish] = f;
    }
}
}
然后在所需的FishTank对象上调用add:


坦克[userInput].addfish

目前,您要做的是将FishTank对象设置为一个Fish实例,而不是将其添加到FishTank内部的tank变量中

现在,您无法访问FishTank类内部的tank变量。您需要做的是使其成为一个全局变量,并提供访问器/修饰符方法。例如:

public class FishTank {

private Fish[] tank;
private int numFish;

public FishTank(){

    this.tank = new Fish[5];
    this.numFish = 0;

}

public void add(Fish f){
    if(this.numFish >= 5){
        //handle "tank is full" case
    }
    else{
        numFish++;
        this.tank[numFish] = f;
    }
}
}
然后在所需的FishTank对象上调用add:


坦克[userInput].addfish

您可以使用点访问该字段,并将其与任何其他数组一样使用:tanks[userInput]。tank[*]=fish您可以使用点访问该字段,并将其与任何其他数组一样使用:tanks[userInput]。tank[*]=fish为了将来的参考,这里通常不赞成为有关家庭作业的问题提供完整的代码解决方案。相反,我们会给出建设性的提示和建议。非常感谢您的想法!我将考虑这些评论,并找出一种方法,我可以开发自己的解决方案,使用你们向我展示的一些东西!我感谢你们帮助我进一步理解这些概念!作为将来的参考,这里通常不赞成为家庭作业问题提供完整的代码解决方案。相反,我们会给出建设性的提示和建议。非常感谢您的想法!我将考虑这些评论,并找出一种方法,我可以开发自己的解决方案,使用你们向我展示的一些东西!我感谢你们帮助我进一步理解这些概念!非常感谢你。这回答了我的问题,还有更多!谢谢你的帮助,非常感谢。这回答了我的问题,还有更多!我感谢你的帮助