Frage von quinci123, 33

Welche Kontrollstrukur brauche ich, wenn bei einem Bestimmten Wert eine Bestimmte Aktion ausgeführt werden soll?

Ich soll eine beliebige Pyramide auf BlueJ mit JavaKarol programieren. Bin schon fast fertig jedoch weiß ich jetzt nicht mehr weiter. Ich würde gerne folgendes eingeben if (x=7) {...} jedoch kann ich kein "=" eingeben denn dann kommt sofort eine Fehlermeldung beim Übersetzen. Es geht nur if (x<7) {...} jedoch ist mir das zu unpräzise. Kann mir einer sagen was ich eingeben muss damit er für einen bestimmten Wert eine bestimmte Aktion ausführt.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von sarahj, 22

"=" ist in C,C++ und Java (und einigen anderen) eine Zuweisung, kein Vergleich.

Was Du wolltest ist "=="

Für Java gilt:
  -> um zwei Objekte auf Identität zu prüfen, verwende "a == b"
  -> um den Inhalt zu vergleichen, verwende "a.equals(b)"

[Aber aufpassen: in Java ist das etwas anderes als in C
 (Inhaltsvergleich vs. Objektidentität) ]

Kommentar von Omnivore08 ,

um zwei Objekte auf Identität zu prüfen, verwende "a == b"

ohhhhh, vorsichtig bei der Aussage!

1. ist Java nicht vollständig objektorientiert

2. vergleicht man Call-by-Value-Typen auf Gleichheit und nicht auf Identität.

Kommentar von sarahj ,

nun ja, aus der Smalltalk-Welt kommend habe ich da ein exakteres Weltbild ;-)

Stimmt: dumm ,daß Java nicht objektorient ist - die blöden native Types...

Ist 7 nun identisch mit 7 oder gleich?
Muss ich 7.equals(x) schreiben oder 7 == x?
(wir wisses es natürlich, aber für Anfänger sind das Fallstricke...)

Andererseits muss ich == (in den meisten Fällen) bei Objekten .equals nehmen, da Identität eher selten gefragt ist (obwohl, dann gibt es doch wieder Ausnahmen, wo ich das möchte...)

Es ist halt weder Fisch, noch Fleisch, dieses Java ;-)))

Habe oben "Objekte zu vergleichen" geschrieben, in der (oberflächlichen) Annahme, daß Zahlen diesbezüglich wie Objekte mit Identität zu betrachten sind - zumindest in erster Näherung, für den Anfang.

Kommentar von Omnivore08 ,

Stimmt: dumm ,daß Java nicht objektorient ist - die blöden native Types..

objektorientiert schon....aber nicht vollständig! :)

Ist 7 nun identisch mit 7 oder gleich?

Identisch sind es beide nicht. Das sind zwei verschiedene Objekte. Sie haben nur die gleiche Wertigkeit :-)

ich weiss es natürlich, aber für Anfänger sind das Fallstricke.

Ich bin der Ansicht, dass man von Anfang an sich über die Unterschiede im klaren sein sollte!

Es ist halt weder Fisch, noch Fleisch, dieses Java ;-)))

Es ist eine Insel ^^

Kommentar von sarahj ,

"objektorientiert schon....aber nicht vollständig! :)"
ist mir schon klar - habe ich eher etwas sarkastisch gemeint. Für Smalltalker sind alles Objekte. Da gibt es keinen faulen Kompromiss.

"Das sind zwei verschiedene Objekte"
sind eben keine Objekte; sonst könnte ich ja 7.equals(x) schreiben - grins.
Und übrigens auch Subklassen bilden...

Die Natives sind die Fleischstücke des vom Piranha zerfleischten Gnu's, die noch im Fischteich schwimmen...

Technisch hast Du recht: die native ints sind value types.
Aber konzeptionell sind sie schon identisch.
Daher ist "==" auch der an sich konzeptionell richtige Vergleichsoperator.

Kommentar von Omnivore08 ,

sind eben keine Objekte; sonst könnte ich ja 7.equals(x) schreiben

Achja...Java ^^ Ich bin halt C-Sharper ^^ Und da geht 7.ToString("X") ohne Probleme ^^

Objekte war der falsche Begriff..."Typ" ist vielleicht besser.

Kommentar von sarahj ,

Besten Dank für den *

Antwort
von Omnivore08, 16

'=' ist der Zuweisungsoperator. Was in C man noch nutzen konnte geht in Java nicht. Du musst den Vergleichsoperator benutzen: '=='

Antwort
von Suboptimierer, 23

In Java wird auf Gleichheit mittels == geprüft.

Eine Behelfslösung wäre gewesen:

if(x>=7){if(x<=7){...}}
Kommentar von maximilianus7 ,

wozu denn diese behelfslösung????

Kommentar von Suboptimierer ,

Um zu zeigen, dass man sich hätte mit gegebenen Mitteln selber helfen können.

Kommentar von quinci123 ,

Diese Behelfslösung hatte ich auch angewendet, aber das funktioniert ab einem bestimmten Punkt nicht mehr

Keine passende Antwort gefunden?

Fragen Sie die Community