mirror of
https://github.com/DerTyp7/lf05-java.git
synced 2025-10-30 04:47:13 +01:00
6
This commit is contained in:
61
src/nogard/schritt6b/BefehlFactory.java
Normal file
61
src/nogard/schritt6b/BefehlFactory.java
Normal file
@@ -0,0 +1,61 @@
|
||||
package nogard.schritt6b;
|
||||
|
||||
/**
|
||||
* Diese Klasse erzeugt Instanzen der Klasse Befehl.
|
||||
*
|
||||
* Kann keine Instanz der Klasse Befehl erzeugt werden, so reagiert die Klasse mit einer entsprechenden Fehlermeldung.
|
||||
*
|
||||
* Besteht ein Befehl nur aus seinem Schl<68>sselwort, so ist der Zusatz des Befehls 'null'.
|
||||
*/
|
||||
public class BefehlFactory {
|
||||
/**
|
||||
* Erstellt eine neue Instanz eines Befehls auf Basis einer Benutzereingabe.
|
||||
* @param input Die Benutzereingabe.
|
||||
* @return Der erstellte Befehl.
|
||||
* @throws BefehlUnbekanntException Wird geworfen, wenn keine Instanz eines Befehls erzeugt werden kann. Gr<47>nde k<>nnen sein:
|
||||
* - Kein Befehl eingegeben.
|
||||
* - Unbekannter Befehl eingegeben.
|
||||
* - Unbekannte oder nicht eingegebene Richtung beim Befehl "go".
|
||||
*/
|
||||
public static Befehl createBefehl(String input) throws BefehlUnbekanntException {
|
||||
// Abbruch bei fehlender Eingabe.
|
||||
if(input == null || input.trim().equals("")) {
|
||||
throw new BefehlUnbekanntException("Du hast keinen Befehl eingegeben.");
|
||||
}
|
||||
// Befehl aufsplitten in die einzelnen Befehlsteile
|
||||
String[] befehlArray = input.trim().split(" ");
|
||||
// Auswerten des Befehlsworts
|
||||
Befehl befehl = null;
|
||||
String befehlWort = befehlArray[0].trim().toLowerCase();
|
||||
switch (befehlWort) {
|
||||
case "go":
|
||||
if (befehlArray.length >= 2) {
|
||||
String richtung = befehlArray[1].trim().toLowerCase();
|
||||
// Pr<50>fen der angegebenen Richtung per Schleife <20>ber Enum aller Richtungen
|
||||
for (Richtungen r : Richtungen.values()) {
|
||||
if (r.name().equalsIgnoreCase(richtung)) {
|
||||
befehl = new Befehl(befehlWort, richtung);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (befehl == null) {
|
||||
throw new BefehlUnbekanntException("Gib eine korrekte Richtung an.");
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw new BefehlUnbekanntException("Erg<EFBFBD>nze deinen Befehl um die Richtung, in die du dich bewegen m<>chtest.");
|
||||
}
|
||||
break;
|
||||
case "help":
|
||||
befehl = new Befehl("help", null);
|
||||
break;
|
||||
case "quit":
|
||||
befehl = new Befehl("quit", null);
|
||||
break;
|
||||
default:
|
||||
throw new BefehlUnbekanntException("Ich wei<65> nicht, was du meinst ...");
|
||||
}
|
||||
return befehl;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user