Hallo zusammen,
ich sitze gerade einer einer Aufgabe bei der Räume wie kitchen, dining room etc. mit Türen verbunden werden sollen. Dabei darf jeder Raum nur eine Tür zu einem anderen Raum haben (z.B. Kitchen zu Dining Room), aber beliebig viele Türen in verschiedene Räume ( also z.B. kitchen in dining Room und kitchen in living room.
Es gibt eine Klasse, die das Ganze testen, also Räume hinzufügt und entfernt bzw. prüft, ob es Verbindungen gibt.
Diese Klasse greift auf die Klasse Room zu, welche die Methoden enthält( Siehe Code).
Wenn ein Raum bereits eine Tür hat, soll die Methode addDoorInto(Room r) ohne Wirkung bleiben. Deshalb war meine Idee das per Hashset zu lösen, da dann doch ein Element nur einmal vorkommen kann ?!
Mein Problem ist jetzt, dass ein Raum zwar hinzugefügt wird, aber laut der Aufgabe der andere Raum, mit dem die Verbindung besteht auch in der Liste sein muss.
Beispiel:
kitchen.addDoorInto(diningRoom)
Dann hat kitchen eine Verbindung zum dining Room, aber nach jetzigem Stand nicht umgekehrt. Ich stehe da etwas auf dem Schlauch.
Hat jemand vielleicht eine Idee, wie man das am einfachsten lösen kann ?
Vielen Dank!
ich sitze gerade einer einer Aufgabe bei der Räume wie kitchen, dining room etc. mit Türen verbunden werden sollen. Dabei darf jeder Raum nur eine Tür zu einem anderen Raum haben (z.B. Kitchen zu Dining Room), aber beliebig viele Türen in verschiedene Räume ( also z.B. kitchen in dining Room und kitchen in living room.
Es gibt eine Klasse, die das Ganze testen, also Räume hinzufügt und entfernt bzw. prüft, ob es Verbindungen gibt.
Diese Klasse greift auf die Klasse Room zu, welche die Methoden enthält( Siehe Code).
Wenn ein Raum bereits eine Tür hat, soll die Methode addDoorInto(Room r) ohne Wirkung bleiben. Deshalb war meine Idee das per Hashset zu lösen, da dann doch ein Element nur einmal vorkommen kann ?!
Mein Problem ist jetzt, dass ein Raum zwar hinzugefügt wird, aber laut der Aufgabe der andere Raum, mit dem die Verbindung besteht auch in der Liste sein muss.
Beispiel:
kitchen.addDoorInto(diningRoom)
Dann hat kitchen eine Verbindung zum dining Room, aber nach jetzigem Stand nicht umgekehrt. Ich stehe da etwas auf dem Schlauch.
Hat jemand vielleicht eine Idee, wie man das am einfachsten lösen kann ?
Vielen Dank!
Java:
import java. util.HashSet;
/**
* A room may be connected to other rooms with one door each.
*/
public class Room {
HashSet<Room> doors = new HashSet<Room>();
/**
* Adds a door into a specific room r. If a door to r already
* exists, this function has no effect.
* @param r The room to be connected.
*/
public void addDoorInto(Room r) {
doors.add(r);
}
/**
* Removes the door into a specific room r. If no door to r exists,
* this function has no effect.
* @param r The room to be disconnected.
*/
public void removeDoorInto(Room r){
doors.remove(r);
}
/**
* Checks if a connection via a door exists.
* @param r The room the connection is checked to.
* @return Returns true if a door into room r exists. Otherwise returns false.
*/
public boolean hasDoorInto(Room r) {
if(doors.contains(r)){return true;}
return false;
}
}