Das war ja weiter unten die Methode geZufaelligeFluchtrichtung. Ich wollte das nur unten zusammenfassen und erst einmal sagen, was grade das Problem ist. Sorry übrigens für die ganzen Rechtschreibfehler aber meine Tastatur spinnt aktuell.
Ich habe nur auf Norden etc. umgestellt, weil du das auch gemacht hattest.
Ich bleibe dann jetzt mal bei dem, wie ich es bei mir im Programm habe. Bei mir steht also weiterhin anstatt norden noch geradeaus usw. Ich habe das ja auch so
Code: Alles auswählen
<?xml version="1.0"?>
<karte>
<raueme>
<raum id="1">
<beschreibung>Der erste Raum</beschreibung>
<nachbarn>
<geradeaus>
<richtung>geradeaus</richtung>
<ref>2</ref>
</geradeaus>
<rechts>
<richtung>rechts</richtung>
<ref>3</ref>
</rechts>
<nachbarn>
</raum>
<raum id="2">
<beschreibung>Raum 2</beschreibung>
<nachbarn>
<zurueck>
<richtung>zurück</richtung>
<ref>1</ref>
</zurueck>
<nachbarn>
</raum>
<raum id="3">
<beschreibung>Der dritte Raum</beschreibung>
<nachbarn>
<links>
<richtung>links</richtung>
<ref>1</ref>
</links>
<nachbarn>
</raum>
</raueme>
</karte>
bspw. probiert aber dennnoch ist das Array und auch die variablen leer. Ich gebe die Nachbarn ja dann auch nachher noch für jeden Raum aus aber da steht immer nur "null" und das wars.
Zu dem Array.:
Meinst du den java.util.Iterator? Wieso das denn? Man kann doch auch so eb end mit einer Schleife drüber iterieren, wie ich es grade mache oder etwa nicht? Das an einzelnen Stellen in Array auch ein null-Wert drin sein kann ist schon klar, aber besser dann mit einem Laufindex prüfen, als jedes Element da so hinschreiben zu müssen oder nicht?
Das ich das Array sozusagen an 2 Orten halte, war wohl etwas schlecht ausgedgrückt, denn das stimmt so nicht. Ich habe das Array jetzt halt nur in die Nachbarn Klasse verschoben und hole mir das bspw. für die getZufaelligeRichtung Methode. Das sollte doch wohl so okay sein? Da muss ja nichts synchronisiert werden, also auch keine redundante Aufbewahrung.
Xin hat geschrieben:
Code: Alles auswählen
Raum r;
Nachbar n = r.get( getZufaelligeFluchtrichtung() );
Höh, so könnte ich meine Methode mit dem zufälligen Raum um einiges vereinfachen. Da habe ich nicht einmal dran gedacht ... tzz ...
Xin hat geschrieben:Designmässig würde ich hier auch eher eine statische Funktion in Richtung einbauen: raum.get( Richtung.getRandom() );
Ansonsten würde ich mich mal auf eine Sprache festlegen und Denglisch ist keine Sprache
Auch wohl eine gute Idee aber ich brauche ja auch eine Instanz des Raumes, um festzustellen ob sich in der Richtung überhaupt ein Raum befindet oder nicht? Davon weiß die Richtungsklasse ja gar nichts und sollte wohl auch nicht so sein, w+rde ich mal behaupten.
Tut mir Leid wegen der gemischten Sprache aber wie ich ja glaube ich schon mal gesagt habe, wollte ich auch Englisch umstellen und da kann ich das get ja schon einmal dalassen.
Demnchst fange ich dann auch immer direkt mit Enlgischen Bezeichnern an, denn Englisch ist ja sowieso die Sprache, die im allgemeinen in Programmiersprachen verwendet wird bzw. in Projekten, wo auch mehrere Leute mit unterschiedlicher Herkunft arbeiten.
Xin hat geschrieben:Die Entscheidung welcher Nachbar es ist, ist abhängig von der Klasse Nachbarn. Also würde ich das da reinpacken und der Raum fragt halt seine Nachbarn.
Stimmt, da hast du Recht. Eigentlich müsste die Methode auch wohl getZufaelligerNachbar oder so heißen und nicht getZufaelligerRaum.
Xin hat geschrieben:Amüsant ist, dass Leute Pointer abstrakt finden und dann Java programmieren...
Bitte versuche folgendes Programm
Code: Alles auswählen
public class MeineKlasse
{
int a;
static void main( String[] argv )
{
MeineKlasse mk;
mk.a = 1;
}
}
Bitte lass das Programm laufen, kopiere die Ausgabe hier rein und erkläre mir, was Du daraus liest.
Naja, es ist ja auch abstrakt oder nicht? Das ist ja nicht nur meine Meinung, sondern das wird auch in vielen Vorlesungen, die man online findet erwähnt oder das schreiben auch viele Autoren in ihren Büchern. Mag ja sein, das es einige nicht abstrakt finden aber wieso ist da amüsant? Nur weil ich das jetzt gesagt habe?
So wie das Programm jetzt ist, würde es wohl nicht laufen, würde ich zumindest sagen.
Wenn ich das in Eclipse reinkopiere, dann kriege ich die Meldung:
The local variable mk may not have been initialized.
Das Programm würde so auch nichts ausgeben, da da eine Ausgabe fehlt?
Das soll doch eine Klasse in Java sein oder? In C++ gibt es ja schließlich keinen Typ String, jedenfalls nicht das ich wüsste. So wäre die main Funktion ja in C++:
oder so: