Agony_

Parser.java

Mar 9th, 2020
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. package zuul;
  2. import java.util.Scanner;
  3.  
  4. /**
  5. * Dieser Parser liest Benutzereingaben und wandelt sie in
  6. * Befehle für das Adventure-Game um. Bei jedem Aufruf
  7. * liest er eine Zeile von der Konsole und versucht, diese als
  8. * einen Befehl aus bis zu zwei Wörtern zu interpretieren. Er
  9. * liefert den Befehl als ein Objekt der Klasse Befehl zurück.
  10. *
  11. * Der Parser verfügt über einen Satz an bekannten Befehlen. Er
  12. * vergleicht die Eingabe mit diesen Befehlen. Wenn die Eingabe
  13. * keinen bekannten Befehl enthält, dann liefert der Parser ein als
  14. * unbekannter Befehl gekennzeichnetes Objekt zurück.
  15. *
  16. * @author Michael Kölling und David J. Barnes
  17. * @version 2008.03.30
  18. */
  19. public class Parser
  20. {
  21. private Befehlswoerter befehle; // hält die gültigen Befehlswörter
  22. private Scanner leser; // Lieferant für eingegebene Befehle
  23.  
  24. /**
  25. * Erzeuge einen Parser, der Befehle von der Konsole einliest.
  26. */
  27. public Parser()
  28. {
  29. befehle = new Befehlswoerter();
  30. leser = new Scanner(System.in);
  31. }
  32.  
  33. /**
  34. * @return Den nächsten Befehl des Benutzers.
  35. */
  36. public Befehl liefereBefehl()
  37. {
  38. String eingabezeile; // für die gesamte Eingabezeile
  39. String wort1 = null;
  40. String wort2 = null;
  41.  
  42. System.out.print("> "); // Eingabeaufforderung
  43.  
  44. eingabezeile = leser.nextLine();
  45.  
  46. // Finde bis zu zwei Wörter in der Zeile
  47. Scanner zerleger = new Scanner(eingabezeile);
  48. if(zerleger.hasNext()) {
  49. wort1 = zerleger.next(); // erstes Wort lesen
  50. if (zerleger.hasNext()) {
  51. wort2 = zerleger.next(); // zweites Wort lesen
  52. // Hinweis: Wir ignorieren den Rest der Eingabezeile.
  53. }
  54. }
  55.  
  56. // Jetzt prüfen, ob der Befehl bekannt ist. Wenn ja, erzeugen
  57. // wir das passende Befehl-Objekt. Wenn nicht, erzeugen wir
  58. // einen unbekannten Befehl mit 'null'.
  59. if(befehle.istBefehl(wort1)) {
  60. return new Befehl(wort1, wort2);
  61. }
  62. else {
  63. return new Befehl(null, wort2);
  64. }
  65. }
  66.  
  67. }
Add Comment
Please, Sign In to add comment