Java-Programmierung. Mehrfachauswahl?
Hallo, kann mir vielleicht jemand sagen, wieso dieser Code nicht funktioniert?
Es sollte wie folgt aussehen:
Wenn die Kaufmenge vom Kunden zwischen 0 und 99 liegt, soll die Nachricht erscheinen, dass er keinen Rabatt bekommt. Wenn er jedoch zwischen 100 und 499 kauft, dann einen Rabatt von 0,5%. Wenn man jedoch nun irgendeine Zahl eingibt, erscheinen BEIDE Nachrichten. Ich verstehe leider nicht warum :/
Ich wuerde es gerne mit if/else anstatt mit switch/case programmieren, da man ganze Zahlenbereiche "schneller" abdecken kann.
4 Antworten
if(...); {}
Das Semikolon unterbricht die If-Anweisung und trennt sie vom nachfolgenden Codeblock. Dadurch wird zuerst die Bedingung geprüft, dann nichts getan und anschließend immer der Codeblock ausgeführt. Das Semikolon ist fehl am Platz.
du hast jeweils ein Semikolon nach der if-Bedingung
Dies bedeutet, dass dein Befehl abgeschlossen ist. Dein auszuführender Block steht also einfach so da ...
if (iEingabe > 0 && iEingabe < 99);{
; // steht hier mal stellvertretend für deinen Code.
}
wäre auch gleichzusetzen mit:
if (iEingabe > 0 && iEingabe < 99);
{
; // steht hier mal stellvertretend für deinen Code.
}
Damit ist zwar dein showMessageDialog in einem eigenen Scope, verändert aber an der Logik nichts
EDIT: als Ergänzung: Überlege dir auch mal (oder probiere es aus), was denn passiert, wenn jemand KEINEN Integer eingibt, sondern z.B. "Baum" - und wie du das verhindern kannst
die semicolons bei dem if sind falsch.
Dir scheint die bedeutung von einem semicolon nicht klar zu sein, schlag das mal nach.
Auch sollten schließende geschwungene klammern immer ne eigene zeile haben in java und semicolons das letzte zeichen einer zeile sein. Funktioniert auch falsch, aber ist besser das richtig zu formatieren.
Also, wenn du eine einzeilige anweisung hast wie:
for(int i, i<10, i++) {
doSomething();
}
Dann finde ich es noch einigermaßen akzeptabel zu schreiben:
for(int i, i<10, i++) { doSomething(); }
Aber sonst, semicolon immer letztes zeichen in einer zeile und schließende klammer in eigener zeile. Das ist eine ausnahme.
Eine öffnende klammer ist meißt in der selben zeile(wie bei dir oder bei meinem letzen beispiel auch), aber viele programmierer die aus C kommen machen das in ner neuen zeile, das ist also nicht so schlimm.
Übrigens, du kannst deine if bedingungen auch ohne klammern in einer zeile schreiben.
Lösch das Semikolon nach der schließenden runden if-Klammer