PR1/settergetter/Train.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
}
}