Switch Case und Variable
lima-city → Forum → Programmiersprachen → Java
anweisung
blocken
code
compiler
eintippen
endeffekt
fehler
glauben
haufe
http
interessanter artikel
interessieren
laufzeit
rock
schleifen
statement
stimme
switch
testen
url
-
Hallo, kann man in einem Switch Case irgendwie den Wert einer Variable benutzen, die außerhalb vom switch liegt? Also wie im Beispiel (Meldet natürlich Fehler).
int indexRock = grassMap.getLayerIndex("rock"); ... for(int j = 0; j < grassMap.getLayerCount(); j++) { switch(j) { case indexRock : this.fields[w][h] = new Field(FieldType.ROCK); break; ,,,// Haufen Cases } }
Ich möchte in der Forschleife ungerne eine if-Anweisung benutzen, das es eine 3x verschachtelte Vorschleife ist, die einen großen Bereich abläuft. Switch Case wäre da einfach Schneller. Ich möchte aber im case keine Zahl eintippen, da es mich nicht interessieren sollte, welchen Index der Rock hat, das kann sich je nach Aufbau der Map ändern.
Beitrag zuletzt geändert: 4.12.2010 23:32:30 von pixilab -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also ich habe keinen Weg gefunden, allerdings ist das auch mehr als unsinnig. Der Geschwindigkeitsvorteil entsteht vor allem, weil es Tabellen anlegen kann, wenn es aber zur Laufzeit erstmal testen muss was denn in der Variable, die hinter case steht, drin ist, wird es imho nicht viel schneller sein, als ein if. Ansonsten wären noch Konstanten denkbar wie etwa ein Enum.
Hab hier einen Link gefunden, da steht zumindest, dass es kosntant sein muss.
http://java.sun.com/docs/books/jls/third_edition/html/statements.html -
Ich hab leider gerade keinen Java-Compiler da um das zu testen, aber er meckert vermutlich am 'case indexRock' oder?
Mal sowas probiert:
final int indexRock = grassMap.getLayerIndex(...);
-
rpgn schrieb:
if schleifen?
gibt es nicht :D
In diesem Fall würde ich auch zu ganz normalen if, ifelse, else raten!
Was du vor hast ist nicht schön...
Ich glaube auch weniger, dass du es merken wirst, ob du if oder switch nimmst,
mal ganz davon abgesehen, dass ich nicht glaube, dass sie schneller sind.
Ein interessanter Artikel, zwar kein PHP, aber läuft ja überall etwa gleich ab:
http://www.dotnet-hb.de/default.aspx?page=47&id=406
Beitrag zuletzt geändert: 24.2.2011 17:00:12 von sneppa -
Sorry, :(, meinte if-Statements...
switch ist wirklich nur dann schneller, wenn die Werte im switch bekannt sind, wenn du es dynamisch aufbaust so wie du es vorhast, dann bekommst du im Endeffekt (sofern es überhaupt irgendwie geht) im Grunde genau das raus - nämlich einen if - else if -else Block
Beitrag zuletzt geändert: 24.2.2011 17:00:07 von rpgn -
Geschlossen, weil aus dem Datensumpf ausgegraben.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage