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:
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
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: