138 lines
2.7 KiB
Java
138 lines
2.7 KiB
Java
public class Train {
|
|
|
|
//Instanzvariablen
|
|
private Locomotive l;
|
|
//private Car carry;
|
|
private int carCount;
|
|
|
|
//Konstruktor
|
|
|
|
Train (Locomotive l){
|
|
this.l = l;
|
|
this.carCount = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
//Methoden
|
|
public void add (Car newCar){
|
|
//New Car zeigt auf ursprüngliches firstCar
|
|
newCar.setNextCar(l.getFirst());
|
|
|
|
//First Variable von Locomotive l zeigt auf newCar
|
|
l.setFirst(newCar);
|
|
carCount++;
|
|
}
|
|
|
|
public String print(){
|
|
|
|
Car current = l.getFirst();
|
|
int len = l.getSize();
|
|
int passos = 0;
|
|
|
|
while (current != null){
|
|
len += current.getSize();
|
|
passos += current.getPassengers();
|
|
current = current.getNextCar();
|
|
}
|
|
|
|
return "Die Lokomotive ist von Typ " + l.getType() + " und ist " + l.getSize() + "m groß. Sie hat " + carCount + " Wagen angehaengt, und ist mit diesen " + len + "m lang. Mit diesem Zug fahren gerade " + passos + " Personen und Personinnen.";
|
|
}
|
|
|
|
public int getPassengers(){
|
|
Car current = l.getFirst();
|
|
int passos = 0;
|
|
|
|
while (current != null){
|
|
passos = passos + current.getPassengers();
|
|
current = current.getNextCar();
|
|
}
|
|
|
|
System.out.println("Anzahl Personen: ");
|
|
return passos;
|
|
}
|
|
|
|
|
|
public int getLength(){
|
|
|
|
Car current = l.getFirst();
|
|
int length = l.getSize();
|
|
|
|
while (current != null){
|
|
length += current.getSize();
|
|
current = current.getNextCar();
|
|
}
|
|
|
|
System.out.println("Länge des Zugs: ");
|
|
return length;
|
|
}
|
|
|
|
|
|
public Car removeFirst(){
|
|
|
|
Car first = l.getFirst();
|
|
if (first == null){
|
|
return null;
|
|
}
|
|
|
|
Car second = first.getNextCar(); //Zweiter Wagen wird deklariert
|
|
l.setFirst(second); // Lok zeigt auf zweiten Wagen
|
|
first.setNextCar(null); //Verweis auf abgehängten Wagen entfernen
|
|
carCount--;
|
|
return first;
|
|
}
|
|
|
|
|
|
public void relink(Train other){
|
|
|
|
Car theirFirst = other.l.getFirst(); //Wagenkette other
|
|
//Zug other hat keine Wagen
|
|
if (other.l.getFirst() == null)
|
|
{return;}
|
|
|
|
Car ourFirst = this.l.getFirst();
|
|
|
|
if (ourFirst == null){
|
|
//WIr haben keine Wagen, also übernehmen
|
|
this.l.setFirst(theirFirst);
|
|
this.carCount = other.carCount;
|
|
}
|
|
|
|
else {
|
|
//Laufvariable zum Zählen der Wagons
|
|
Car current = ourFirst;
|
|
//Solange ein nächster Wagon existiert
|
|
while (current.getNextCar() != null) {
|
|
current = current.getNextCar();
|
|
}
|
|
current.setNextCar(theirFirst);
|
|
this.carCount += other.carCount;
|
|
other.carCount = 0;
|
|
}
|
|
// Anderen Zug leeren
|
|
other.l.setFirst(null);
|
|
}
|
|
|
|
public void revert(){
|
|
//vorheriger Wagen
|
|
Car prev = null;
|
|
//aktueller Wagen
|
|
Car current = l.getFirst();
|
|
//Tauschreferenz
|
|
Car next;
|
|
|
|
while (current != null){
|
|
next = current.getNextCar(); //Nachfolger merken
|
|
current.setNextCar(prev); //Zeiger umdrehen
|
|
prev = current;
|
|
current = next;
|
|
|
|
}
|
|
l.setFirst(prev); //neuer Anfang
|
|
}
|
|
|
|
|
|
|
|
|
|
} |