kostenloser Webspace werbefrei: lima-city


Switch Case und Variable

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    pixilab

    Kostenloser Webspace von pixilab

    pixilab hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. 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(...);
  5. Stimme reimann zu, warum bist du so gegen if schleifen? Wenn sich die Fälle vor allem überschneiden, kannst du durch verschachtelte if-s dir einen Entscheidungsbaum bauen um möglichst viele if-s möglichst schnell abzuhandeln.

    LG!
  6. 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
  7. 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
  8. Geschlossen, weil aus dem Datensumpf ausgegraben.
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!