Case statt if else Abfragen?!

scitex

scitex

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:

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
                {

                }

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?!
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
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:
scitex

scitex

Bekanntes Mitglied
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?

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
                {

                }
 
Zuletzt bearbeitet:
scitex

scitex

Bekanntes Mitglied
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:
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
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 :)
 
scitex

scitex

Bekanntes Mitglied
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:
I

infos9

Mitglied
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.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Regex (Case insensitive und Umlaute) Allgemeine Java-Themen 4
B RowFilter Case Insensitive Problem Allgemeine Java-Themen 3
L String -> Case insensitiv replacement Allgemeine Java-Themen 5
1 String mit contains vergleichen (ignore case) Allgemeine Java-Themen 2
DStrohma [Erledigt] Regex CASE INSENSITIVE Allgemeine Java-Themen 7
K Sortierung, Collator und Case Allgemeine Java-Themen 5
V Case-sensitiv nur in Jar? Allgemeine Java-Themen 8
MQue Use case Allgemeine Java-Themen 8
E CASE Tools Allgemeine Java-Themen 15
F case Allgemeine Java-Themen 3
0 case orphaned Fehlermeldung! Allgemeine Java-Themen 2
G switch case VS. if.else if Allgemeine Java-Themen 2
M Switch von case zu case weiterleiten Allgemeine Java-Themen 6
M Bei String.format ein Komma statt einem Punkt ausgeben lassen Allgemeine Java-Themen 1
A was kann ich nehmen als statt IsHitBy? Allgemeine Java-Themen 3
das_leon Komma statt Punkt Allgemeine Java-Themen 10
F Java moved Files statt sie zu kopieren Allgemeine Java-Themen 12
D Class<CAP#1> statt Class<...> Allgemeine Java-Themen 5
M Generics (bounded wildcards statt Interface Bezeichnern) -- Sinn oder Unsinn? Allgemeine Java-Themen 2
P Datentypen float mit komma statt punkt möglich? Allgemeine Java-Themen 6
D Shortcut statt Datei einlesen Allgemeine Java-Themen 2
K Collection.contains()/retainAll() mit Referenzgleichheit statt equals()? Allgemeine Java-Themen 2
H SwingWorker statt Thread für einen Server Allgemeine Java-Themen 2
R Dateiarbeit: In Datei weiterschreiben statt überschreiben Allgemeine Java-Themen 5
P SFTP mit ppk key statt openssh key Allgemeine Java-Themen 4
Meldanor For-Schleifen - byte statt int? Allgemeine Java-Themen 11
S indize statt split() Allgemeine Java-Themen 10
P Wieso HashMap-Zugriff mit Object, statt mit MyObject? Allgemeine Java-Themen 12
G Was nutzen statt Mehrfachvererbung? Allgemeine Java-Themen 7
G Arraylist statt List - Sehr schlimm? Allgemeine Java-Themen 8
N Hilfe: Bekomme statt '>' '&gt;' . Allgemeine Java-Themen 11
H Referenzen statt Objekte für große Speicherstrukturen Allgemeine Java-Themen 19
L Zwei Hashtables statt einer? Allgemeine Java-Themen 6
E Statt HashSet die TreeSet verwenden Allgemeine Java-Themen 4
R Window statt Frame Allgemeine Java-Themen 6
M Variablen If - Else Wiederholungsfehler Allgemeine Java-Themen 3
L Vererbung If-Else ersetzen durch was? Allgemeine Java-Themen 20
O Darstellung von else if anweisung im struktogramm? Allgemeine Java-Themen 1
R Wie schaffe ich es, dass java zB 100 zählt ohne ständig "else if" hinschreiben zu müssen? Allgemeine Java-Themen 7
J if else Anweisung macht nicht was es soll. Wieso? Allgemeine Java-Themen 10
K Eclipse Alternativkonstrukte (Verzweigungen: if, switch,else..) Allgemeine Java-Themen 4
D if - else Baum vereinfachen Allgemeine Java-Themen 4
S Else-Anweisung Problem Allgemeine Java-Themen 17
B Berechnung von Punkten/ If-else Strategie?! Allgemeine Java-Themen 51
M if - else Abfrage beenden Allgemeine Java-Themen 4
M if, else, etc. als Membervariablen? Allgemeine Java-Themen 14
P if(a) else if (b) else if (c) . Frage Allgemeine Java-Themen 2
G die mittlere von 5 Zahlen nur mit if und else finden Allgemeine Java-Themen 48
U Kompilieren einer großen Datei if-else = StackOverflowError Allgemeine Java-Themen 4
W kompliziertes Konstrukt von Schleifen/If/else. Rekursion? Allgemeine Java-Themen 22
H if - else if-else bessere Lösung gesucht Allgemeine Java-Themen 4
H If anweisungen zu verschachtelt? else without if Allgemeine Java-Themen 8
D Performancefrage zu "else if" und "||" Allgemeine Java-Themen 10
G if . else ? Allgemeine Java-Themen 36

Ähnliche Java Themen

Anzeige


Oben