2014-01-28 49 views
2

我做了一類叫做魚:使對象的數組

public class Fish { 

    private String species; 
    private int size; 

    //Constructor 
    public Fish(int x, String s) { 
     size = x; 
     species = s; 
    } 

    public String getSpecies() { return species; } 

    public int getSize() { return size; } 

    public String toString() { 
     return String.format("A %dcm %s", size, species); 
    } 
} 

的,我也開始做一類叫做池塘,是爲了有保存的數組稱爲「魚」的屬性魚對象。我不確定如何做到這一點。這是我迄今的嘗試。我

public class Pond { 
    private int capacity; 
    private Object[] fish; //This is what I am trying to initialize. list of Fish. 
    private int numFish; 

    //Capacity Constructor 
    public Pond(int n, int c) { 
     n = numFish; 
     c = capacity; 
    } 

    public int getNumFish() { return numFish; } 

    public boolean isFull() { 
     boolean isFull = false; 
     if (numFish >= capacity) { 
      isFull = true; 
     } 
     else { 
      isFull = false; 
     } 
     return isFull; 
    } 

    public String toString() { 
     return String.format("Pond with %d fish", numFish); 
    } 

    public void add(Fish aFish) { 
     if (numFish <= capacity) { 
      numFish += 1; 
      fish.add Fish; 
     } 
     else { 
      numFish += 0; 
     } 
    } 
} 
+0

http://docs.oracle.com/javase/tutorial/爪哇/ nutsandbolts/arrays.html。順便說一句,我看不出任何問題。只是兩個注意事項:如果它是一個魚類數組,它應該是'Fish []'類型,並且被命名爲'fishes'(array ==> multiple fishes ==> plral form) –

+1

@JBNizet魚也是魚的複數,我想(這裏不是母語)。但是,在這種情況下,魚類可能會更好。 –

+0

@ peter.petrov:謝謝。我今天學到了東西。 –

回答

0

由於ArrayList可以根據需求增長,因此您需要使用ArrayList而不是Array

看看這個code.Should幫助你:

public class Fish { 
String name; 


public Fish(String name) { 

    this.name=name; 

} 

public String toString() { 
    return name; 
} 
} 

然後:

import java.util.*; 

public class Pond { 

ArrayList<Fish> fishInPond = new ArrayList<>(); 


public void addFish(Fish e) { 

    fishInPond.add(e); 
} 

public void showFishes() { 
    for (int i= 0; i<fishInPond.size();i++) { 
     fishInPond.get(i); 
    } 
    System.out.println("Fishes in my pond: " + fishInPond); 
} 


    public static void main(String[]args) { 
     Pond myPond = new Pond(); 
     myPond.addFish(new Fish("Tilapia")); 
     myPond.addFish(new Fish("cat fish")); 

     myPond.showFishes(); 
    } 

}

+0

非常感謝!這幫助了我很多。現在有沒有辦法去除所列魚類的方括號?例如,不是顯示[羅非魚,貓魚],而是顯示羅非魚,貓魚? – theGuy05

+0

也許可能讓每條魚在打印出來時都有自己的線條? – theGuy05

+0

有幾種方法可以做到這一點,我建議你閱讀[this](http://stackoverflow.com/questions/7854084/java-printing-linkedlist-without-square-brackets) –

1

更改此:

private Object[] fish;

如下:

private Fish[] fish;

即這些魚,不是任何
類型的對象(它們不是哺乳動物例如)。

1

Pond構造函數中,您將私有字段分配給構造函數參數。我覺得應該是周圍的其他方法:

public Pond(final int n, final int c) { 
    numFish = n; 
    capacity = c; 
} 

一個側面說明:聲明Pond構造函數的參數finalprevent這些類型的錯誤,在編譯時。

此外,如果要在運行時擴展fish數組,則array不是容器類型的最佳選擇。 ArrayList<Fish>是一個更好的選擇,因爲它可以在運行時擴展。

1

以下是無效的 -

fish.add aFish; 

使用數組你

fish[numFish] = aFish; //increment numFish after this 

您還需要初始化數組

fish = new Fish[capacity]; 

在構造函數。