簡體   English   中英

將對象放入另一個對象數組內部的對象數組

[英]Placing an Object into and Object Array, which is inside another Object Array

所以我是編碼/ Java的新手,正在從事這個項目。 我的任務是創建3個不同的類(在這里有),並使它們配合。 我已經成功地使FishTankManagerApp類檢索了一個新的Fish對象,並且試圖找出如何將其放入FishTank對象中。

我的FishTank類僅用於創建一個可以容納5條魚的數組對象(我認為我已經正確地做到了)。 在我的FishTankManagerApp類中,我創建了一個由10個FishTank對象組成的數組。

FishTank我的問題是,在創建對象后,如何將Fish對象放入特定的FishTank對象中(我在遇到的代碼末尾做了一個注釋一個問題)。

從本質上講,我知道我想將我創建的對象放入and數組中,該對象包含另一個可以存儲魚對象的數組...我認為....

任何幫助將非常感激! 謝謝!

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 class FishTank {

    public FishTank(){

        Fish[] tank = new Fish[5];

    }
}
import java.util.Scanner;

public class FishTankManager {

    private static Scanner stdin = new Scanner(System.in);
    private static int userInput;
    private static FishTank[] tanks = new FishTank[10];

    public static void main (String[] args) {


        while (true){
            System.out.println("Welcome to your new fish tank manager!\n"+
                               "What would you like to do?\n"+
                               "(1)Add a Fish\n(2)Move a Fish\n"+
                               "(3)Check a tank");          
            userInput = stdin.nextInt();

            if (userInput == 1){
                Fish fish = new Fish();     
                System.out.println(fish.name);
                System.out.println(fish.mean);  

                changeTank(fish);

            }
            else if(userInput ==2){
            }
            else{
            }
        }
    }

    private static void changeTank(Fish fish){

        System.out.println("Which tank would you like to put this fish in? (1-10)");
        userInput = stdin.nextInt();

        tanks[userInput] = fish;
        // This last line is where I'm confused on how to put the fish() object into a tank which I've created.
    }
}

我建議您在FishTank添加一種方法,以使添加魚變得容易。 也許是這樣的:

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:

tanks [userInput] .add(fish);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM