![](/img/trans.png)
[英]How can I access an object array located inside of another object which is then inside a superclass array?
[英]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.