Abfrage mit instanceof führt zu unerwarteten Wert

NeoLexx

Mitglied
Hej, ich kann folgendes nicht nachvollziehen, vielleicht kann mir da einer von euch helfen:

1602194264157.png
In Zeile 7 erzeuge ich ein Array vom DatenTyp ObjektUniversum.
In Zeile 8 ein Array vom Typ SonnenSystem.
ObjektUniversum ist die Oberklasse von SonnenSystem.

1602194379223.png

In Zeile 302 mache ich eine Abfrage mit instanceof zu Testzwecken, dir mir ein "false" liefert, was ich jedoch nicht ganz nachvollziehen kann:

Wie man sehen kann, teile ich in Zeile 301 dem Objekt galaxie [50] [50] das Objekt sonne [1499] zu, wie bereits oben erwähnt handelt es sich um Objekte, die aus Oberklasse und Unterklasse bestehen. Soweit mir bekannt ist, soll instanceof bei dem vergleich von zwei Datentypen, die in einem Vererbungsverhältnis stehen, also Oberklasse und Unterklasse, ein true ausgeben.
 

NeoLexx

Mitglied
Hätte jetzt gedacht, dass ich es in Zeile 301 zugewiesen habe.

Die Idee ist folgende, ich erzeuge ein Feld von 51 x 51 Feldern. Jedes davon ist ein Objekt vom Typ ObjektUniversum. In einer Methode erzeuge ich dann einen Spiralarm aus Sternen, welches sich in diesem 51x51 Feld wieder findet (siehe Bild). Überall da wo die Methode einen Stern erzeugt möchte ich den Typ des Feldes von ObjektUniversum in den Typ SonnenSystem abändern.

1602196994716.png
 
Zuletzt bearbeitet:

NeoLexx

Mitglied
Hmm, also irgendwie weiß ich gerade noch nicht was ich dem DatenTypen von Typ SonnenSystem überhaupt für ein Wert zuweisen soll. Die Klasse SonnenSystem selbst, ist noch nicht fertig. Soll aber Später ein ähnliches Feld von 51 x 51 Feldern enthalten die dann aus Objekten vom Typ SonnenSystemObjekt bestehen, die wiederum Oberklasse von Objekten wie Planet usw. sind..

1602197885224.png

Ich habe aber gerade die Vermutung, dass das Ganze mit Arrays anzugehen, nicht meiner Modellvorstellung (siehe UML) entspricht und es dadurch zu einer Verwirrung meinerseits gekommen ist. Na ja, heute Nachmittag, werde ich mich mit dem Code weiter auseinander setzen, bis dahin bin ich für alle Tipps dankbar.
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Du kannst das durchaus mit Arrays lösen, der Modellierung in UML widerspricht das nicht. Das was du im Code machst passt nur nicht ganz zu dem Diagramm bzw ist einfach auf Java-Ebene falsch.

Nach deinem Diagramm enthält eine Galaxie ein (sollten eher mehrere sein) "ObjektUniversum" (potentiell solltest du dir einen besseren Namen überlegen ;) ), und ein "ObjektUniversum" kann dann ein Sonnensystem sein – klingt soweit nicht falsch.

In deinem Code enthält eine Galaxie aber sowohl viele "ObjektUniversum", als auch zusätzlich 1500 Sonnensysteme. Letzteres solltest du an der Stelle einfach streichen, dann entspricht es wieder deinem Diagramm. In dem ObjektUniversum-Array solltest du stattdessen direkt Sonnensystem-Objekte speichern, also etwas in die Richtung von galaxie[50][50] = new Sonnensystem();.
 

NeoLexx

Mitglied
Nach deinem Diagramm enthält eine Galaxie ein (sollten eher mehrere sein) "ObjektUniversum" (potentiell solltest du dir einen besseren Namen überlegen ;) ), und ein "ObjektUniversum" kann dann ein Sonnensystem sein – klingt soweit nicht falsch.
Ja, das soll eigentlich ObjektGalaxie heißen. Werde ich noch abändern.

In deinem Code enthält eine Galaxie aber sowohl viele "ObjektUniversum", als auch zusätzlich 1500 Sonnensysteme. Letzteres solltest du an der Stelle einfach streichen, dann entspricht es wieder deinem Diagramm. In dem ObjektUniversum-Array solltest du stattdessen direkt Sonnensystem-Objekte speichern, also etwas in die Richtung von galaxie[50][50] = new Sonnensystem();.
Okay, das hört sich gut an. Mit new SonnenSystem(); spreche ich ja den Standart-Konstruktor der Klasse SonnenSystem an. Damit sollte auch die Abfrage isinstanceof funktionieren.
Nach deinem Diagramm enthält eine Galaxie ein (sollten eher mehrere sein) "ObjektUniversum"
Die Multiplizitäten muss ich noch nachtragen, in der Beziehung Galaxie zur ObjektGalxie(noch ObjektUniversum) besteht die Multiplizität 1 ------> 0..*

Danke für die Tipps. :)
 

mrBrown

Super-Moderator
Mitarbeiter
Ja, das soll eigentlich ObjektGalaxie heißen. Werde ich noch abändern.
ObjektGalaxie klingt allerdings genauso merkwürdig ;) wenn „Objekt“ im Namen vorkommt, ist das meist ein Hinweis, das es besser ginge – ich wüsste aber um ehrlich zu sein nicht, wie man das sonst nennen könnte, vielleicht sogar einfach nur „Raum“ (wird allerdings ziemlich OT...)

Mit new SonnenSystem(); spreche ich ja den Standart-Konstruktor der Klasse SonnenSystem an.
Wobei du gut überlegen solltest, ob du überhaupt einen Standard-Konstrukor haben willst, war ja nur ein Beispiel von mir ;)

Die Multiplizitäten muss ich noch nachtragen, in der Beziehung Galaxie zur ObjektGalxie(noch ObjektUniversum) besteht die Multiplizität 1 ------> 0..*
Ach so, die hab ich da nicht mal vermisst, ich finde nur das „hat ein“ sehr unschön (also generell, nicht bezogen auf dein Diagramm). Diese „Standard-Beschriftungen“ würde ich immer weglassen, wenn man nichts passendes findet. Das gleiche drückt man schon durch die Pfeile aus, die nichts-sagende Beschriftung ist da nur „Bloat“ (genauso wie die meisten Multiplizitäten) — aber ist auch wieder ziemlich OT, also ruhig ignorieren was ich alter Mann hier so vor mich hinplappere :p
 

NeoLexx

Mitglied
Danek für die Hilfe! Das Programm macht im genau das, was es in seinem frühen Zustand machen soll:

1602223327909.png

Es kann nun "Galaxien" per Zufall generieren.
 

temi

Top Contributor
Meine laienhafte Meinung zur Astronomie ist ja, dass das Universum das große Ganze ist und viele Galaxien enthält. Die Galaxien enthalten wiederum viele Sonnen (-systeme) und andere Dinge, wobei das Universum neben Galaxien auch einzelne Sonnen und andere Dinge enthalten kann (die z.B. irgendwann mal von "ihrer" Galaxie getrennt wurden).

"Andere Dinge" meint z.B. Nebel, schwarze Löcher, Quasare, dunkle Materie, ...

Aber das nur am Rande... ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Negative Abfrage auf instanceof Java Basics - Anfänger-Themen 3
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
L If Abfrage Java Basics - Anfänger-Themen 4
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
W if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das? Java Basics - Anfänger-Themen 6
B Automatisierte Ausgabe (Schleife, If-Abfrage?) Java Basics - Anfänger-Themen 24
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
P Amazon SQS abfrage Java Basics - Anfänger-Themen 1
Marlena Bauer IBAN generieren (Deutschland) aus Abfrage von BLZ und Kontonummer? Java Basics - Anfänger-Themen 31
M Abfrage j/n und Bildschirm löschen Java Basics - Anfänger-Themen 3
S Und-Abfrage mit mehreren Ungleich-Operatoren Java Basics - Anfänger-Themen 17
O if Abfrage erkennt String nicht Java Basics - Anfänger-Themen 1
N Bedinugng If-Abfrage wird nie erfüllt Java Basics - Anfänger-Themen 4
L boolean-Abfrage enumeration Java Basics - Anfänger-Themen 3
Y Methoden Wie kann ich eine if-Abfrage bei Setters bauen? Java Basics - Anfänger-Themen 6
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
F If Abfrage gibt falsches Ergebnis.... Java Basics - Anfänger-Themen 6
F POST-Request mit json - Abfrage mit Java Java Basics - Anfänger-Themen 2
C Javafunktion zur Abfrage eines Quellcodes Java Basics - Anfänger-Themen 15
A JOPtionPaneOptionDialog Abfrage welcher Button gedrückt wurde? Java Basics - Anfänger-Themen 8
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
G if Abfrage: Nicht jeder Fall berücksichtigt Java Basics - Anfänger-Themen 2
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
J Erste Schritte if Abfrage von JButton in 2. Klasse Java Basics - Anfänger-Themen 27
S If Abfrage nur mit bestimmter Initialisierung? Java Basics - Anfänger-Themen 8
Z Boolean Abfrage in einer for each Schleife Java Basics - Anfänger-Themen 2
deatzi Variable aus If Abfrage später nutzen Java Basics - Anfänger-Themen 4
C Instanz einer Klasse während if-Abfrage erzeugen und bei zweiter if-Abfrage wiederverwenden Java Basics - Anfänger-Themen 6
S Backspace Abfrage funktioniert nicht Java Basics - Anfänger-Themen 4
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
G Passwort und Passwort wiederholen in if-Abfrage vergleichen Java Basics - Anfänger-Themen 15
P Altklausur: Abfrage der Summe Java Basics - Anfänger-Themen 9
N Methoden Attribut Abfrage eines anderen Objektes Java Basics - Anfänger-Themen 36
D MySQL Abfrage in JTable speichern Java Basics - Anfänger-Themen 43
D SQL Abfrage anpassen Java Basics - Anfänger-Themen 17
H For-Schleife innerhalb If-Abfrage? Java Basics - Anfänger-Themen 3
F Abfrage ob Eingabe eine Zahl ist Java Basics - Anfänger-Themen 3
O Datentypen Volle 16 Bit eines Short für flags Abfrage nutzen Java Basics - Anfänger-Themen 11
S Input/Output Doppelte Input-Abfrage Java Basics - Anfänger-Themen 3
S Input/Output Programm läuft nach input-Abfrage nicht weiter. Java Basics - Anfänger-Themen 2
M Variablen Eine etwas andere if Abfrage ! Java Basics - Anfänger-Themen 10
H if-Abfrage, ungleich und falscher true Wert? Java Basics - Anfänger-Themen 11
F Ja Nein Abfrage und andere Probleme Java Basics - Anfänger-Themen 5
OlafHD Fehler Bei der if Abfrage Java Basics - Anfänger-Themen 5
quecksilver if-Abfrage in main ausführen Java Basics - Anfänger-Themen 4
D if-Abfrage Java Basics - Anfänger-Themen 12
J Abfrage für Programmwiederholung Java Basics - Anfänger-Themen 2
K Alternative zur If-Abfrage Java Basics - Anfänger-Themen 3
M Java als Webanwendung mit Datenbank abfrage Java Basics - Anfänger-Themen 3
D Abfrage ob Variableninhalt korrekt Java Basics - Anfänger-Themen 5
W Vergleich mit If-Abfrage nur für Zahlen bis 07 möglich - Warum? Java Basics - Anfänger-Themen 7
D Operatoren IF Abfrage liefert falsches Ergebnis Java Basics - Anfänger-Themen 4
X Ja nein abfrage? Java Basics - Anfänger-Themen 9
A Erste Schritte Problem bei meiner if-Abfrage! Java Basics - Anfänger-Themen 5
M Enum-Variabel-Abfrage funktioniert nicht? Java Basics - Anfänger-Themen 2
S Java Counter: nur 1 mal hochzählen auch wenn Abfrage mehrmals zutrifft. Java Basics - Anfänger-Themen 1
E Erste Schritte [Noob-Frage] Meine If-Abfrage macht nicht, was sie soll... Java Basics - Anfänger-Themen 2
C Abfrage nach einem Bild im Array Java Basics - Anfänger-Themen 9
A Key Event - Abfrage von 2 gedrückten Tasten Java Basics - Anfänger-Themen 6
T Klasse für Google-Abfrage Java Basics - Anfänger-Themen 9
Z If abfrage - Minimum 0 Java Basics - Anfänger-Themen 9
J Abfrage versetzen Java Basics - Anfänger-Themen 2
D Methoden Abfrage ob ein Wert bereits vorhanden ist Java Basics - Anfänger-Themen 1
thet1983 if() Abfrage Java Basics - Anfänger-Themen 2
A charAt(x)-Abfrage lässt bei Strings<x das Pgrogramm abstürzen. Kann man das verhindern? Java Basics - Anfänger-Themen 4
Uzi21 if - else Abfrage Java Basics - Anfänger-Themen 6
T Index-Abfrage von Pi Java Basics - Anfänger-Themen 5
H Erste Schritte If Abfrage Java Basics - Anfänger-Themen 3
B If Abfrage mit Passwort und Username Java Basics - Anfänger-Themen 2
U einlesen, abfrage Java Basics - Anfänger-Themen 25
T SQL Abfrage Läuft nicht Java Basics - Anfänger-Themen 5
N Probleme mit ActionListener und Logischer Abfrage Java Basics - Anfänger-Themen 4
F Erste Schritte IF-Abfrage fehlerhaft Java Basics - Anfänger-Themen 9
O Downloaden: Trotz If Abfrage wird Datei heruntergeladen Java Basics - Anfänger-Themen 2
D jProgressBar soll bei 100% sein wenn sql Abfrage inkl. jTable schreiben fertig ist... Java Basics - Anfänger-Themen 5
H if-Abfrage double wert Java Basics - Anfänger-Themen 5
M Erstes Prog. OS Abfrage Java Basics - Anfänger-Themen 9
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
B Boolean abfrage Java Basics - Anfänger-Themen 3
D Variablen Rücksprung nach If Abfrage Java Basics - Anfänger-Themen 16
T If- Abfrage Java Basics - Anfänger-Themen 8
P Taschenrechner , IF-Abfrage Java Basics - Anfänger-Themen 12
D if-Abfrage Java Basics - Anfänger-Themen 6
G Einfache if-Abfrage der Main-Argumente Java Basics - Anfänger-Themen 3
C If abfrage zu getBackground Java Basics - Anfänger-Themen 2
T abfrage eines Integer Array s Java Basics - Anfänger-Themen 5
feardorcha boolean array false - true - Abfrage Java Basics - Anfänger-Themen 10
G Adminrechte abfrage Java Basics - Anfänger-Themen 5
S Abfrage Objekt-Array nach Datentypen Java Basics - Anfänger-Themen 6
R If-Abfrage, || funktioniert nicht Java Basics - Anfänger-Themen 4
S TabbedPane: nach Abfrage oldTab selektieren Java Basics - Anfänger-Themen 5
B Abfrage mittels Variable vereinfachen Java Basics - Anfänger-Themen 6
C Treffer Abfrage Java Basics - Anfänger-Themen 19
M nach jar export keine db abfrage möglich Java Basics - Anfänger-Themen 2
T Datenbank Abfrage Exception Null Java Basics - Anfänger-Themen 2
J Erste Schritte Im Tante-Emma-Laden mehrere Artikel kaufen mit if-Abfrage Java Basics - Anfänger-Themen 24

Ähnliche Java Themen

Neue Themen


Oben