Case statt if else Abfragen?!

ReinerCoder

Bekanntes Mitglied
Hallo,

da ich schon länger mit Java nichts gemacht habe bin ich relativ raus und wollte man wissen wie ihr mehrere Abfragen zu insgesamt 8 Textfeldern realisieren würdet.

Also ich habe 8 Textfelder die allesamt zu Berechnung genutzt werden. Diese bekommen dann double Werte eingegeben die dann in den jeweiligen Methoden verarbeitet werden.

Nun will ich Abfragen erstellen, wo für alle Felder Abfragen gestellt werden, dass kein Wert bzw. die vorgegebene 0 eingeben wurde und eine Message ausgegeben wird das Werte in die Felder eingegeben werden müssen, damit eine Berechnung erfolgen kann. Nun habe ich das Problem, wenn ich dies mit if und else realisiere, dann werden mehrere Messages hintereinander mit dem gleichen Hinweis ausgegeben, das Werte einzugeben sind.

Also eine Abfrage sieht z.B. so aus:

[CODE lang="java" title="if else Abfrage"] if (p.getA()!=0)
{
JOptionPane.showMessageDialog(null, "Sie haben einen Wert eingegeben, damit ist keine Berechnung möglich.\nBitte geben Sie ausreichend viele Variablen zur Berechnung ein.");
}
else
{

}[/CODE]

Also ich denke sowas muss ich mit Case realisieren, bin mir nicht mehr ganz sicher wie so was dann aussehen müsste bzw. ob diese Vermutung richtig ist?!
 
Wenn dein else wirklich so aussiehst, also leer ist, kannst du es auch einfach weg lassen, dann sollte offensichtlich sein, warum da mehrere Dinge direkt hintereinander ausgegeben werden 🙂

Gehts eigentlich immer noch um Dreiecks/Prismen/Whatever-Berechnungen?
 
Zuletzt bearbeitet:
Gehts eigentlich immer noch um Dreiecks/Prismen/Whatever-Berechnungen?

Ja ist dieser Rechner den ich mal angefangen und nicht fertig gestellt habe. Habe den seit dem liegen gelassen und bin nun wieder damit angefangen.

Wie sieht denn sowas mit switch case aus?

[CODE lang="java" title="else if"]
if (p.getA()!=0)
{
JOptionPane.showMessageDialog(null, "Sie haben einen Wert eingegeben, damit ist keine Berechnung möglich.\n");
}
else
{

}

if (p.getB()!=0)
{
JOptionPane.showMessageDialog(null, "Sie haben einen Wert eingegeben, damit ist keine Berechnung möglich.\n");
}
else
{

}

if (p.getC()!=0)
{
JOptionPane.showMessageDialog(null, "Sie haben einen Wert eingegeben, damit ist keine Berechnung möglich.\n");
}
else
{

}

if (p.getDreieckflaeche()!=0)
{
JOptionPane.showMessageDialog(null, "Sie haben einen Wert eingegeben, damit ist keine Berechnung möglich.\n");
}
else
{

}

if (p.getDreieckumfang()!=0)
{
JOptionPane.showMessageDialog(null, "Sie haben einen Wert eingegeben, damit ist keine Berechnung möglich.\n");
}
else
{

}

if (p.getPrismaflaeche()!=0)
{
JOptionPane.showMessageDialog(null, "Sie haben einen Wert eingegeben, damit ist keine Berechnung möglich.\n");
}
else
{

}

if (p.getPrismavolumen()!=0)
{
JOptionPane.showMessageDialog(null, "Sie haben einen Wert eingegeben, damit ist keine Berechnung möglich.\n");
}
else
{

}[/CODE]
 
Zuletzt bearbeitet:
Mit switch-case kannst du nur == (bzw für Strings equals) umsetzen, nicht !=.

Jau stimmt. Da war was..
Jetzt weis ich auch wieder wieso ich kein Case genommen hab?! Mit == könnte ich noch die umgekehrte Logik des ganzen umsetzen, kürzer wäre allerdings != in dem Fall.

switch case kommt eh nicht in Frage, da laut

switch-case

keine Objekte geprüft werden können: "Die Verzweigung kann primitive byte-, short-, char- und int-Werte, jedoch keine long, float oder gar Objekte prüfen."

In dem Quell Code soll mit z.B. p.getA()!=0 das Objekt p geprüft werden.

Sieht dann wohl so aus als ob ich die Messages in dem Fall dann besser weg lassen muss?!

Hier ist ein Bild von dem Rechner:

beispielRechnungPrismaRechner.jpg
 
Zuletzt bearbeitet:
Nutz einfach ein ganz normalen if dafür, kein Grund dafür switch-case oder Arrays zu nutzen oder irgendwas wegzulassen.

In dem Quell Code soll mit z.B. p.getA()!=0 das Objekt p geprüft werden.
Nein. An der Stelle soll p.getA() auf 0 geprüft werden – das ist eine primitive Zahl, kein Objekt, und damit problemos in einem switch-case ausdrückbar. Allerdings ist ein switch-case dafür halt Unsinn.



BTW: den kompletten Inhalt des Beitrags eine halbe Stunde später noch mal ändern ist nicht grad sehr nett. Wenn du das machst, kennzeichne dass doch bitte explizit 🙂
 
BTW: den kompletten Inhalt des Beitrags eine halbe Stunde später noch mal ändern ist nicht grad sehr nett. Wenn du das machst, kennzeichne dass doch bitte explizit 🙂
OK. Würde ich ja jetzt noch machen, aber in diesem Forum ist ja für nachträgliche Änderungen eine begrenzte Zeit eingestellt.

Ich weis jetzt welchen Logikfehler ich damals gemacht habe: ich muss anstatt mit mehreren else if mit && und mit || eine lange Abfrage machen.
 
Zuletzt bearbeitet:
Hi, hab vor kurzem eine Bitscoin Calculator programmiert, der so ähnlich funktioniert... Dabei hab ich es so gemacht, dass alle Eingabefelder mit einer Schleife durchlaufen werden und nur, wenn jede Eingabe gültig war, werden die Ausgabefelder berechnet und befüllt. Das funktioniert gut.
 

Zurück
Oben