Ich verstehe switch einfach nicht

Status
Nicht offen für weitere Antworten.

Keylan

Mitglied
Hallo zusammen,

ich erarbeite mir gerade Java, in einem aufwendigeren Projekt. Über eine Java api baue ich mir verschiedene Zugriffe auf einen Verwaltungs-Tool Server die über die normalen Clients nicht so einfach möglich sind.

Ich komme recht gut vorran nachdem ich mich nochmal ein Wochenende mit Literatur zu Java beschäftigt habe geringe Vorkenntnisse und Grundwissen über Objektorientierte Programmiersprachen war vorhanden.
Allerdings ist das mein erstes Richitges Java Projekt und ich habe so manches Anfängerproblem.

Heute habe ich eine Abfrage zerlegt, und wollte eine Ausgabe abhängig von verschiedenen Parametern basteln.

Ich dachte per if/else wird das ganze unübersichtlich und unsauber, switch sollte Mittel meiner Wahl sein.

Hier nun ein kleiner Auszug:

Code:
int i=0;

            do{

                  int a=0;

                  int j=0;

                  System.out.println(SerUSER.get(i).getUserName()+"#"+SerUSER.get(i).getLicenseInfo().size());

                  System.out.println("Lizenzgruppen:"+SerUSER.get(i).getLicenseInfo().get(j).getLicensePool());

                  System.out.println("");

                  do{  

            [COLOR="Red"]/*

                        switch((int) SerUSER.get(i).getLicenseInfo().get(j).getCurrentLicenseType()){

                             case 0:

                             case 1:

                                   System.out.println("Lizenz Fix: "+SerUSER.get(i).getLicenseInfo().get(j).getLicenseTag());

                             case 2:

                                   System.out.println("Lizenz Float: "+SerUSER.get(i).getLicenseInfo().get(j).getLicenseTag());

                             case 3:

                                   System.out.println("Lizenz Fix2: "+SerUSER.get(i).getLicenseInfo().get(j).getLicenseTag());

                             default:

                                   System.out.println("Fehler");

                             }*/[/COLOR]

                              if(SerUSER.get(i).getLicenseInfo().get(j).getCurrentLicenseType()==0)

                                   a++;

                                   else

                              if(SerUSER.get(i).getLicenseInfo().get(j).getCurrentLicenseType()==1)

                                   System.out.println("Lizenz Fix: "+SerUSER.get(i).getLicenseInfo().get(j).getLicenseTag());

                                   else 

                              if(SerUSER.get(i).getLicenseInfo().get(j).getCurrentLicenseType()==2)

                                   System.out.println("Lizenz Float: "+SerUSER.get(i).getLicenseInfo().get(j).getLicenseTag());

                                   else       

                              if(SerUSER.get(i).getLicenseInfo().get(j).getCurrentLicenseType()==3)

                                   System.out.println("Lizenz Fix2: "+SerUSER.get(i).getLicenseInfo().get(j).getLicenseTag());

                                    else

                                   System.out.println("Fehler");

                       

                        j++;

                  }while (j < SerUSER.get(i).getLicenseInfo().size());

            i++;

            }while (i < SerUSER.size());

In dieser Form Funktioniert die Abfrage.Der switch ist Auskommentiert, und ich habe doch eine if/else Abfrage gebastelt.

Warum?

Na weil es so geht, die switch Anweisung ist immer durch alle Fälle gegangen, und hat somit viel zu viele Ausgaben erzeugt.

Der (int) cast wäre eingentlich nicht notwendig der Rückgabewert ist bereits ein int, ich wollte nur sicher gehen das nicht doch ausversehen ein char oder so geliefert wird (dann wäre aber die api Doku falsch gewesen)

Das case 0: keinen Befehl enthält sollte auch kein Problem gewesen sein, auch als ich einen Sop eingebaut hatte kamen falsche Ausgaben.

Ich hätte gedacht das der switch Befehl eben genau die Kurzform dieses if/else Konstrukts wäre, das unterschiedliche Verhalten spricht aber dagegen.

Auch nachdem ich in Lehrbüchern Nachgeschlagen habe interpretiere ich den switch Befehl genau so wie eine if/else Schachtelung.

Wie ist es wirklich? warum verhält sich switch anders, oder welchen fehler habe ich in den auskommentierten Block gemacht?

Ich habe mehrfach die Syntax mit Beispielen aus der Literatur verglichen und komme ncuht drauf :(

Kann mir hier nochmal jemand genau erklären wie switch funktioniert bitte.

Danke Gruß
Keylan
 
Zuletzt bearbeitet:

sliwalker

Top Contributor
4Deine Lösung heißt

Code:
break;

switch ist nur mit break ein if-else.
Ohne break werden alle cases durchlaufen die einschließlich ab dem korrekten case-Fall(tolles Wort) bis einschließlich des default-cases.

break; als letzte Anweisung am Ende jeden cases sorgt dafür, das der switch-Block verlassen wird.

greetz
SLi
 

Noctarius

Top Contributor
Switch unterstützt sogenanntes Falltrough da du einem Case nur einen Wert mitgeben kannst kannst du mehrere Cases hinter einander schreiben um mehrere Fälle zusammen zu bearbeiten:

Java:
switch (foo) {
    case 1:
        System.out.println("1");
        break;

    case 2: // Fallthrough
    case 3:
    case 4:
        System.out.println("2, 3 oder 4");

    case 5: {
        System.out.println("5");
    }

    case 6: // Fallthrough
    case 7: {
        System.out.println("6 oder 7");
    }

    default:
        System.out.println("Alles Andere");
}

Für die Cases kann man dann, wie oben gezeigt, entweder ein break; benutzen um die Abarbeitung des Switch an einer gewissen Stelle zu unterbrechen oder man setzt einen Codeblock mit Braces { ... }
 
S

SlaterB

Gast
die Klammern wären mir neu als break-Ersatz, bist du sicher? bringen bei mir nix hinsichtlich break
Java:
public class Test {

	public static void main(String[] args) {
		int x = 4;
		switch (x) {
		case 4: {
			System.out.println("4");
		}
		case 5: {
			System.out.println("5");
		}

		}
	}
}
 

Noctarius

Top Contributor
hm ich war der Meinung das hätte das break ersetzt... aber ok überzeugt - sorry also doch break setzen :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
nbergmann x /= n : Verstehe ich nicht. Java Basics - Anfänger-Themen 24
S Schulaufgabe - verstehe leider die Aufgabe nicht Java Basics - Anfänger-Themen 4
ZH1896ZH Verstehe verschieden Scanner und hasNext() nicht ganz Java Basics - Anfänger-Themen 2
ZH1896ZH OOP Verstehe nicht was der Hinweis bedeutet, bitte um Hilfe! Java Basics - Anfänger-Themen 2
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
A Shopping Cart Programm. Verstehe einige Zusammenhänge nicht Java Basics - Anfänger-Themen 1
T Brauche Hilfe um ein Programm zu verstehe Java Basics - Anfänger-Themen 4
K Erste Schritte Ich verstehe das Summenprogramm nicht Java Basics - Anfänger-Themen 10
S Ich verstehe die RegEx Tabelle von Javadoc nicht so ganz Java Basics - Anfänger-Themen 3
V Erste Schritte Array.length[x] in einer Schleife - ich verstehe das nicht Java Basics - Anfänger-Themen 1
Y Erste Schritte Ich verstehe this. nicht so richtig Java Basics - Anfänger-Themen 5
DaCrazyJavaExpert Methoden Verstehe Feheler nicht! Java Basics - Anfänger-Themen 7
Henri ich verstehe gerade nicht die Methode Java Basics - Anfänger-Themen 6
dave253 Ich verstehe folgenden Code nicht.. Java Basics - Anfänger-Themen 12
V Verstehe die Lösung einer Aufgabe von Grunkurs-Java nicht. Java Basics - Anfänger-Themen 11
J Verstehe die NullPointerException nicht Java Basics - Anfänger-Themen 1
J Verstehe meine HashSet Ausgabe nicht Java Basics - Anfänger-Themen 5
P Verstehe Lösung einer Aufgabe von "Grundkurs-Java" nicht Java Basics - Anfänger-Themen 5
O Ich verstehe nicht, was Eclipse von mir will Java Basics - Anfänger-Themen 10
G Methoden Verstehe nicht was in der Methode gemacht wird? Java Basics - Anfänger-Themen 5
M Verstehe das Programm(Quellcode) nicht!! Java Basics - Anfänger-Themen 12
B Verstehe ZufallInt = (int) (Math.random() * 5 + 1); nicht Java Basics - Anfänger-Themen 9
J Rekursiver Horner-Schema-Algorithmus - Verstehe ich ihn richtig? Java Basics - Anfänger-Themen 2
F verstehe diese Variable nicht... Java Basics - Anfänger-Themen 4
A Codezeile die ich nicht verstehe Java Basics - Anfänger-Themen 7
Pentalon Ein Aufruf den ich nicht verstehe Java Basics - Anfänger-Themen 11
V Verstehe die Logik nicht ... Java Basics - Anfänger-Themen 30
C rekursive Methode verstehe nicht! Java Basics - Anfänger-Themen 3
B verstehe methode nicht methode Java Basics - Anfänger-Themen 2
B Erste Schritte Verstehe das nicht Java Basics - Anfänger-Themen 3
C verstehe get und set nicht Java Basics - Anfänger-Themen 3
J Interface Wie funktioniert das mit den Interfaces. Ich verstehe es einfach nicht! :( Java Basics - Anfänger-Themen 15
T ich verstehe array nicht! Java Basics - Anfänger-Themen 11
P for Schleife mit break, verstehe die Ausgabe nicht Java Basics - Anfänger-Themen 6
A Verstehe readLine()-Funktion nicht Java Basics - Anfänger-Themen 3
A Verstehe das GUI nicht! Java Basics - Anfänger-Themen 7
D Verstehe Zusammenhang nicht- Und ihr? Java Basics - Anfänger-Themen 4
M THREADS - Ich verstehe es nicht Java Basics - Anfänger-Themen 10
T Verstehe Bufferreader prinzip nicht Java Basics - Anfänger-Themen 3
E I-JVM verstehe ich das richtig (bytecode aufgabe) Java Basics - Anfänger-Themen 2
M Verstehe Aufgabe nicht, wie kann man schleifen einbauen? Java Basics - Anfänger-Themen 5
N Verstehe Step10 bei jME Eclipsetutorial nicht Java Basics - Anfänger-Themen 4
L Verstehe den Wert nicht! If-Anweisung Java Basics - Anfänger-Themen 5
N Verstehe diese Aufgabe nicht! Java Basics - Anfänger-Themen 16
Rudolf Verstehe das Ergebnis nicht - bitte erklären Java Basics - Anfänger-Themen 7
S Finde den Fehler nicht/ verstehe Anweisung nicht Java Basics - Anfänger-Themen 12
C Verstehe Code-Teil nicht. Java Basics - Anfänger-Themen 2
S Ich verstehe diese Methode nicht! Java Basics - Anfänger-Themen 6
G Verstehe das nicht. bitte um hilfe Java Basics - Anfänger-Themen 13
R Thread startet nicht, verstehe nicht warum Java Basics - Anfänger-Themen 2
R Verstehe die Ausgabe von folgendem Code nicht Java Basics - Anfänger-Themen 4
A verstehe aufgabenstellung nicht! Java Basics - Anfänger-Themen 47
S verstehe den fehler nicht Java Basics - Anfänger-Themen 14
C Verstehe die Syntax nicht! Java Basics - Anfänger-Themen 2
M Verstehe den Quellcode nicht ganz Java Basics - Anfänger-Themen 3
7 Verstehe Programm nicht Java Basics - Anfänger-Themen 6
G verstehe das problem nicht :( Java Basics - Anfänger-Themen 4
S RegEx Syntax - ich verstehe sie einfach nicht! Java Basics - Anfänger-Themen 3
G verstehe den unterschied zwischen equals und == nicht Java Basics - Anfänger-Themen 3
E Verstehe eine Schleife nicht Java Basics - Anfänger-Themen 5
B Eine Linie zeichnenmit Java, ich verstehe das einfach nicht Java Basics - Anfänger-Themen 4
G Verstehe einen Aufruf absolut nicht Java Basics - Anfänger-Themen 2
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
A switch statement Java Basics - Anfänger-Themen 4
volcanos enum und switch (neu): falschen Wert mit IllegalArgumentException oder mit EnumConstantNotPresentException abfangen ? Java Basics - Anfänger-Themen 51
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
Lion.King switch-Befehl Java Basics - Anfänger-Themen 6
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
P9cman Vokal Zähler mit switch case und for-Schleife Java Basics - Anfänger-Themen 4
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
C if-Konstrukt durch switch-Konstrukt ersetzen Java Basics - Anfänger-Themen 14
1 Switch Case Java Basics - Anfänger-Themen 3
T Alternative für switch case Java Basics - Anfänger-Themen 1
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
W Taschenrechner mit Switch case Java Basics - Anfänger-Themen 4
B Notensystem Switch-Case Java Basics - Anfänger-Themen 31
S Switch-Case zur Berechnung der Einkommensteuer Java Basics - Anfänger-Themen 15
F Switch case wird als char nicht erkannt.... Java Basics - Anfänger-Themen 6
V Switch Methode macht Code kaputt Java Basics - Anfänger-Themen 18
H Frage zur if-Bedingung bzw switch case Java Basics - Anfänger-Themen 6
S switch case fängt beim letzten case an Java Basics - Anfänger-Themen 6
J Parameterübergabe in switch? Java Basics - Anfänger-Themen 2
M Switch Java Basics - Anfänger-Themen 2
F Switch Case Problem mit Regex lösen? Java Basics - Anfänger-Themen 6
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
F Switch Case Modulo berechnen Java Basics - Anfänger-Themen 12
F Erste Schritte Frage zu simplem Taschenrechner(switch) Java Basics - Anfänger-Themen 16
NoMercy BitFlags Programm (switch on/off , swap und isSet) Java Basics - Anfänger-Themen 7
S Switch-Case für eine Array-Zuordnung Java Basics - Anfänger-Themen 5
S switch und case Java Basics - Anfänger-Themen 1
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
B Problem bei switch statement Java Basics - Anfänger-Themen 4
D Klassen Problem bei switch-case? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben