0

Zoo クラス (およびそのテスト クラス) を実装します。動物園には、メートル四方の名前と面積があります。動物園には 1 匹以上の動物を飼うことができます。動物には、ID、名前、タイプ、年齢、性別があります。動物園に新しい動物を追加したり、動物を削除したり、現在動物園にいる動物の数を判断したりできるはずです。

これは Zoo クラスです。

import java.util.ArrayList;

public class Zoo {
    String name;
    String area;
    ArrayList<Animal> animals;
    static int id;

    public Zoo(String name, String area) {
        this.name = name;
        this.area = area;
    }

    public void addanimal(animal ann) {
        animals.add(id, ann);
        id++;
    }
}

public class Animal {
    String name;
    String type;
    String age;
    String gender;

    public Animal(String name, String type, String age, String gender) {
        this.name = name;
        this.type = type;
        this.age = age;
        this.gender = gender;
    }
}
public class Test {

    public static void main(String[] args) {
        Zoo nozha = new Zoo("nozha", "100");
        Animal lion = new Animal("lion", "male", "20", "fine");
        nozha.addanimal(lion);
        Znimal tiger = new Animal("tiger", "male", "30", "ssc");
        nozha.addanimal(tiger);
        System.out.print(Zoo.id);
    }
}

最初に、関数 (addanimal) のヘルプが必要です。なぜなら、(zoo.id) を印刷したときに機能せず、動物を削除する方法がわからなかったからです。前に尋ねたことがない

4

3 に答える 3

8

animals変数をデフォルト値以外の値に初期化する必要があります。これは次のnullとおりです。

private List<Animal> animals = new ArrayList<Animal>();

javadocjava.util.List見ると、要素を追加および削除するメソッドと、そのサイズを返すメソッドが含まれているため、id 変数が完全に不要になっていることがわかります。

また、javadoc では、すべてのクラスが大文字で始まり、すべてのメソッドがキャメルケース (likeaddAnimal()と not like addanimal()) で綴られていることに注意してください。これらの規則を尊重してください。これらは、コードを読みやすくするための非常に重要な要素です。

また、変数に適切なタイプを選択します。平方メートル単位の面積は、int、float、または double にする必要がありますが、String にすることはできません。

于 2012-09-19T11:17:40.273 に答える
0

Zoo.java:

import java.util.ArrayList;
  public class Zoo {

    String name; 
    double area; 
    int sizeOfZoo = 0;
    ArrayList<Animal> animals = new ArrayList<Animal>();


    public Zoo(String name, double area) { 
        this.name = name; 
        this.area = area;

    }   

        public void addAnimal(Animal ann) {
        animals.add(ann); 
    } 

        public int getSizeOfZoo() {
                return animals.size();
        }
    }

Animal.java

public class Animal {
    String name;
    String type;
    String age;
    String gender;

    public Animal(String name, String type, String age, String gender) {

            this.name = name;
            this.type = type;
            this.age = age;
            this.gender = gender;
        }    
    } 

テスト.java

    public class Test {

        public static void main(String[] args) {

            Zoo nozha = new Zoo("nozha", 100);
            Animal lion = new Animal("lion","fine","20","male");
            nozha.addAnimal(lion); 

            Animal tiger = new Animal("tiger","ssc","30","female");
            nozha.addAnimal(tiger);

            System.out.println("Number of animals in zoo: " + nozha.getSizeOfZoo());
        }
} 

Id 変数を取り除くために、 getSizeOfZoo() メソッドを追加しました。area の String を Double に変更しました。クラスを別々に保ち、命名規則 Class、variable、methodName() などを維持します。これにより、読みやすくなります。ライオンとトラを作成するときのパラメーターが少しずれていたので、名前、タイプ、年齢、性別にしました。

ArrayList の javadoc を確認すると、ArrayList から要素を「削除」する方法を理解できます (あなたのためにプロジェクトを行うのは気が進まない)。あなたが遭遇した問題は、Java 固有または OOP 固有の問題ではなく、コーディングの基本に関するものです。読んで、メソッド removeAnimal(animal an) を試してみて、どうやってうまくいくか見てみましょう。何か問題があればお手伝いしますが、getSizeOfZoo() と addAnimal() とドキュメントを見てください。

それが役立つことを願っています。

于 2012-09-19T11:50:09.570 に答える
0

最初に関数 (addanimal) のヘルプが必要です (zoo.id) を印刷するとき

あなたのコードに基づいて、代わりに上記のリストのサイズを使用する理由のサイズ、zoo.idまたはカプセル化のルールによって、. これは NullPointerException を返す可能性があるため、arraylist を初期化します`ArrayList<animals>animals.size()getAnimals().size()ArrayList<animals> with a empty

上記の動物をリストから削除するには、animals.remove(Animal ann).

更新では、 IDまたはhashCodeを介してanimals.contains(Animal ann)真かどうかを確認し、リストにあるインデックスを確認してから更新しますannannanimals.set(<index>, ann)

于 2012-09-19T11:19:28.130 に答える