Java课程的层次结构

  • 本文关键字:层次结构 Java java
  • 更新时间 :
  • 英文 :


我创建了动物园的模型。在我的动物园里,我只有鸟。在我的主要课程中,我把动物放在笼子里。目前,可以将无限数量的鸟类添加到笼子中。但是,每个笼子里不应有两只以上的鸟。我该如何进行此修订?

主类

public class Zoopark {
public static void main(String[] args) {
    Bassein V1 = new Bassein();
    Bird B = new Bird("Vala", 100, true);
    V1.putAnimal(B);
    Bird C = new Bird("Lilu", 100, true);
    V1.putAnimal(C);
    Bird D = new Bird("Abara", 100, true);
    V1.putAnimal(D);
    OpenCage V2 = new OpenCage();
    Hippo E = new Hippo("Kala", 1000, true);
    V2.putAnimal(E);        
    Hippo I = new Hippo("Nala", 1000, true);
    V2.putAnimal(I);
    Hippo F = new Hippo("Mala", 1000, true);
    V2.putAnimal(F);
    Hippo U = new Hippo("Ala", 1000, true);
    V2.putAnimal(U);
}
}

cages

上课
import java.util.ArrayList;
import java.util.List;
public class Valers {
private final static int CageLimit=2;
List<Animals> result = new ArrayList<Animals>();
public void putAnimal(Animals a) {
    int numAnimals=result.size();
    if (numAnimals>=CageLimit) { 
       System.out.println("This cage is full!");
       System.out.println(" ");
    }
    else {
       this.result.add(a);
       System.out.println("Animal added in cage");
       System.out.println("  ");
    }
}
public int getCageAnimals() {
    return result.size();
}
}

Bassein Cage类:

public class Bassein extends Valers {
}

Opencage Cage类:

public class OpenCage extends Valers {
}

抽象类动物:

abstract public class Animals {
private String name;
private int weight;
// is this boy?
private boolean isMale;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getAge() {
    return weight;
}
public void setAge(int age) {
    this.weight = weight;
}
public boolean isMale() {
    return isMale;
}
public void setMale(boolean isMale) {
    this.isMale = isMale;
}
public Animals(String name, int weight, boolean isMale) {
    this.name = name;
    this.weight = weight;
    this.isMale = isMale;
}
}

类鸟:

public class Bird extends Animals {

public Bird(String name, int weight, boolean isMale) {
    super(name, weight, isMale);
    System.out.println(name + " " + weight + " " + isMale);
}
}

与河马类:

public class Hippo extends Animals {
public Hippo(String name, int weight, boolean isMale) {
    super(name, weight, isMale);
    System.out.println(name + " " + weight + " " + isMale);
}
}

现在此输出:

Vala 100 true
Animal added in cage
Lilu 100 true
Animal added in cage
Abara 100 true
This cage is full!
Kala 1000 true
Animal added in cage
Nala 1000 true
Animal added in cage
Mala 1000 true
This cage is full!
Ala 1000 true
This cage is full!

应该是:

Vala 100 true
Animal added in cage
Lilu 100 true
Animal added in cage
Abara 100 true
This cage is full
Kala 1000 true
Animal added in cage
Nala 1000 true
Animal added in cage
Mala 1000 true
Animal added in cage
Ala 1000 true
Animal added in cage

谢谢!

在将动物添加到Valers.putanimal():

之前添加此

if (result.size() >= 2) {
    System.out.println("This cage is full!");
    return;
}

而 @lw001的答案将给出适当的打印输出,我相信,从逻辑上讲,您仍然会在笼子中添加第三只动物。更好的是,您要添加一种检查笼子的方法的方法。然后添加IF语句仅在少于两只动物时添加动物。例如:

    import java.util.ArrayList;
    import java.util.List;
    public class Valers {
    private final static int CageLimit=2;
    List<Animals> result = new ArrayList<Animals>();
    public void putAnimal(Animals a) {
        int numAnimals=result.size();
        if (numAnimals>=CageLimit) { 
           System.out.println("This cage is full!");
           System.out.println(" ");
        }
        else {
           this.result.add(a);
           System.out.println("Animal added in cage");
           System.out.println("  ");
        }
    }
    public integer getCageAnimals() {
        return result.size();
    }
}

请注意,我包括private final static int用于Cagelimit。这是因为好的练习规定不要在代码逻辑中包括"魔术数字"。因此,在开始时将其初始化为不可变值。

最新更新