Hallöchen, Java-Rookie am Werk, ich scheitere gerade daran, ein Element aus einem Objekt-Array ausgeben zu lassen. Statt der gewünschten Ausgabe "7, 14" bekomme ich "Point@6bc7c054" ausgegeben. Woran kann das liegen?
Konkret: Ich habe in einer Klasse "ObjArr" ein Objekt-Array, das aus Objekten der Klasse "Point" besteht, sowie eine Methode zum Abfragen eines Wertes aus dem Array (getValue):
Wenn du System.out.println() aufrufst und ein Objekt übergibst wird implizit die toString() Methode des Objektes aufgerufen. Diese gibt, sofern nicht überschrieben, einen Wert zurück dem der Adresse des Objektes im Speicher ähnelt. Überschreib einfach die toString() Methode deiner Point Klasse und es funktioniert
(Wahlweise kannst du natürlich auch dein println abändern in bspw: System.out.println(array1.getValue().getY()); was aber bei weitem nicht so schön ist wenn du es dir öfter ausgeben lassen willst
Da gibt er mir nen Fehler aus, "Syntax error, annotations are only available if source level is 1.5 or greater". Ich habs jetzt mal in der Mainclass mit:
Java:
double x;
x = anArray[0].getX();System.out.println(x);
probiert, anstatt dem obig stehendem
Java:
System.out.println(array1.getValue());
führt leider auch zu ner Fehlermeldung "anArray cannot be resolved to a variable". Die Methode getValue(); ist ja auch nur ne Notlösung, eigentlich wäre es imho eleganter über den Getter in der Point-Klasse zuzugreifen. Bin dankbar für Ratschläge...
Ratschlag? Update dein JDK auf 1.8.
Was ist denn anArray? Welchen Typ hält dieses Array? Vermute mal Point?
Hast du das Array irgendwo deklariert a la "Point [] anArray = new Point [10];"?
Solltest du tun, denn er meckert, dass die Variable nicht aufgelöst bzw nicht gefunden werden kann. Hinweise aus der IDE können sehr hilfreich sein. Falls Du keine benutzt, würde ich (persönliche Meinung) zu Netbeans oder Eclipse greifen.
anArray hält Objekte des Typs Point, richtig, und ich habe das Array deklariert (vgl. oberstes Codebeispiel im ersten Post). Ich nutze OpenJDK, bereits unter Eclipse.
Mit welcher Java Version programmierst du denn??????? o:
Wenn das alles so stimmt wie du es in deinen Posts geschrieben hast und ich mich nicht verlesen habe dann existiert anArray in deiner Main-Klasse gar nicht.
Dann müsstest du anArray[iCode] erst noch via array1.getValue() initialisieren.
anArray hält Objekte des Typs Point, richtig, und ich habe das Array deklariert (vgl. oberstes Codebeispiel im ersten Post). Ich nutze OpenJDK, bereits unter Eclipse.
Also normalerweise müsste das funktionieren. Auf welcher Distribution bist du denn unterwegs?
Normalerweise sollte selbst das openJDK auf 8 laufen. Schon seit geraumer Zeit ist 9 draußen.