ich dieses Programm zu schreiben, das die Klasse Ant hat:Java- Looping durch durch eine Anordnung mit Instanzvariablen in Konstrukteuren
Der Standardkonstruktor initialisiert die Instanzvariablen Königinnen nur 1 Queen namens „Beth "Und colonySize bis 100.000.
Der definierte Konstruktor nimmt zwei Parameter auf und initialisiert die entsprechenden Instanzvariablen .
Die Methode Display zeigt die Informationen über eine Ameise im Format unter:
This ant colony has the following queens: Queen 1: Beth The colour of the ants: black The approximate colony size: 100000
Hier ist die Klasse Ants ich dieses geschrieben habe:
public class Ant {
private String[] queens= new String [1];
public String colour= "black";
private int colonySize;
public Ant(){
queens[0]= "Beth";
colonySize= 100000;
}
public Ant(String[] queens, int colonySize){
this.queens[0]= queens[0];
this.colonySize= colonySize;
}
public void display(){
for(int i=0; i<queens.length;i++){
System.out.println("Queen "+ (i+1) +":" + queens[i]);
}
System.out.println("The colour of the ants: "+ this.colour);
System.out.println("The approximate size of the colony: "+ this.colonySize);
}
}
Dann erweitert die Klasse FireAns die Klasse Ameisen, wobei
Der definierte Konstruktor übernimmt zwei Parameter und initialisiert die relevanten Instanzvariablen . Es setzt dann die Farbe der Ameisen auf "rot" und die giftige Instanzvariable auf "wahr".
Die Methode Display zeigt die Informationen zu einem Feuerameise im Format unter:
This ant colony has the following queens: Queen 1: Lilith Queen 2: Maya The colour of the ants: red The approximate colony size: 250000 The Fire ants are: venomous
Klasse Fireants:
public class FireAnt extends Ant {
private boolean venomous;
public FireAnt(String[] queens, int colonySize){
super(new String[]{"Lilith", "Maya"}, 250000);
super.colour= "red";
this.venomous= true;
}
public void display(){
super.display();
if(this.venomous=true){
System.out.println("The ants are: venomous");}
}
}
Die Klasse MainAnts die initialisiert ein Array Ameisen mit den folgenden:
i) Eine FireAnt-Kolonie mit zwei Königinnen namens Lilith und Maya bzw. mit einer Koloniegröße von 250.000 Ameisen.
ii) eine Ameise
und die folgende angezeigt wird, wenn es ausgeführt wird:
This ant colony has the following queens:
Queen 1: Lilith
Queen 2: Maya
The colour of the ants: red
The approximate colony size: 250000
The Fire ants are: venomous
This ant colony has the following queens:
Queen 1: Beth
The colour of the ants: black
The approximate colony size: 100000
Klasse MainAnts:
public class MainAnts {
public static void main(String[] args) {
// TODO Auto-generated method stub
Ant obj[]= new Ant[2];
obj[0]= new Ant();
obj[1]= new FireAnt(new String[]{"Lilith", "Maya"}, 250000);
for(int i=0; i<2;i++){
obj[i].display();
System.out.println();
}
}
}
Die Sache ist die, dass, wenn ich das Programm leite nur die erste Queen von FireAnts wird gedruckt. Unten ist die Ausgabe, wenn die Hauptklasse ausgeführt wird.
Ich nehme an, es ist, weil ich in der Ameisen-Klasse Königin auf das erste Element im Array gesetzt habe. Ich möchte auch wissen, wie die boolesche Variable venomous
ausgedruckt werden kann, wenn es auf true
festgelegt ist, anstatt es hart zu codieren. Kann nicht herausfinden, wie man diese 2 Dinge repariert.
Jede Hilfe würde sehr geschätzt werden. Außerdem möchte ich Vorschläge und Verbesserungen im Programm haben.
Danke.
Elliott seiner Antwort Ihre Probleme beheben soll. Erwägen Sie, Ihre Klassen in 'AntColony' und' FireAntColony' umzubenennen, da die Objekte eigentlich keine einzelne Ameise darstellen. – Michael
@Michael Danke für den Vorschlag :) – Tia