Nun, ich habe einen Code geschrieben und alles, was ich gemacht habe, war für Schleifen, aber ich ändere, welche Methode ich aufgerufen habe. Ich habe versucht, eine for-Schleife zu verwenden, so dass es ein bisschen sauberer wäre (und aus Neugierde, um zu sehen, ob es gemacht werden könnte), aber es kompiliert nicht, wenn ich es so mache, weil es ein Element nicht erkennt ein Array als Methode, denke ich. Das ist was ich habe:
%Vor%Wenn ich kompiliere, bekomme ich
%Vor%(bezieht sich auf die erste Anweisung in der while-Schleife)
Also, ich denke, es ist vielleicht, weil ich es zu einem Array vom Typ String mache? Gibt es eine Art Methode? Ist das überhaupt möglich? Irgendwelche Lösungen willkommen :). Außerdem kann ich es mit 4 While-Loops zum Laufen bringen, so dass Sie mir diese Lösung nicht zeigen müssen. Danke!
Sie können Methoden in Arrays nicht in Java speichern, da Methoden in Java keine erstklassigen Objekte sind. Es ist ein Grund, warum manche Leute andere Sprachen wie Python, Scheme, etc bevorzugen.
Die Problemumgehung besteht darin, eine Schnittstelle zu erstellen, die eine Methode enthält, und dann vier Klassen zu erstellen, die diese Schnittstelle implementieren - die Klassen MoveRight, MoveLeft, etc .... Dann können Sie Instanzen dieser Klassen in Ihrem Array speichern und sie alle auf die gleiche Weise aufrufen.
Sie können solche Methoden nicht aufrufen. Aber Sie können Reflexion verwenden:
Ändern Sie einfach die erste Zeile in der while-Schleife zu:
%Vor%(Sie müssen einige Ausnahmen angeben / abfangen)
Aber vermeiden Sie besser die Reflexion und verwenden Sie stattdessen das Befehlsmuster .
Ja, Sie können Methoden in Arrays speichern, indem Sie Reflection verwenden. Es ist jedoch wahrscheinlich, dass Sie dies tun eigentlich wollen Sie in dieser Situation tun Polymorphismus .
Als ein Beispiel für Polymorphismus in Bezug auf Ihr Problem - sagen wir, Sie haben eine Schnittstelle wie folgt erstellt:
%Vor%Sie können Implementierungen dann wie folgt erstellen:
%Vor% usw. für die anderen Bewegungsoptionen. Sie könnten diese dann in einer MoveCommand[]
oder Sammlung wie einem List<MoveCommand>
speichern und dann über das Array / die Sammlung, die move () für jedes Element aufruft, iterieren, zum Beispiel:
Polymorphismus ist sehr mächtig, und das obige ist ein sehr einfaches Beispiel für etwas, das Befehlsmuster genannt wird. Genießen Sie den Rest Ihrer Wumpus World-Implementierung:)