Forum: PC-Programmierung Switch Case Anweisung


von Modellbauer (Gast)


Lesenswert?

Hallo zuasmmen,

und zwar habe ich folgendes Problem:
Wenn ich in JavaScript eine Variable var mit einer if Anweisung abfrage, 
funktioniert alles einwandfrei:
1
if(isiDevice == "7,E,18")
2
  {    
3
    log(device + " 3.1.3");
4
  }

Wenn ich allerdings eine Switch Case Abfrage mache, wird immer nur die 
default aufgerufen:
1
switch(isiDevice)
2
{    
3
        case ("7,E,18"):  log(device + "3.1.3");
4
          break;
5
  default:    log("Fehler");
6
}

Warum funktioniert das nicht?
Was mache ich falsch?

Vielen Dank im Voraus

Modellbauer

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Ich würde mal die klammern wegnehmen und ggf mal den tatsächlichen 
String loggen...
1
switch(isiDevice) {    
2
  case "7,E,18":
3
    log(device + "3.1.3");
4
    break;
5
  default:
6
   log("Fehler: '"+isiDevice+"' nicht gefunden");
7
}

von Modellbauer (Gast)


Lesenswert?

Danke schonmal,

Läubi .. schrieb:
> Ich würde mal die klammern wegnehmen

Ohh ja hatte ich vorher aber hatte es auch mit ausprobiert, man weiß ja 
nie...
also ich...


Läubi .. schrieb:
> ggf mal den tatsächlichen
> String loggen...

hab ich auch schon getan gehabt...

Läubi .. schrieb:
> default:
>    log("Fehler: '"+isiDevice+"' nicht gefunden");

Wirft mir jetzt aus:
Fehler: '7,E,18' nicht gefunden

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Auch Java kann in switch/case nur mit ganzzahligen Datentypen umgehen, 
ein Stringvergleich ist damit nicht möglich.

Siehe:

http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

von Modellbauer (Gast)


Lesenswert?

Rufus t. Firefly schrieb:
> Auch Java kann in switch/case nur mit ganzzahligen Datentypen umgehen,
> ein Stringvergleich ist damit nicht möglich.

Das ist ja blöde. Aber ok dankeschön. Das wusste ich natürlich nicht, 
weil das gerade mein erstes "Programm" in Javascript ist. Möchte damit 
erkennen, ob man eine Seite mit einem iPod ansurft und wenn ja, welche 
SW er drauf hat...
Naja ist ja nicht so wichtig, was ich damit vorhabe.

Dann werde ich wohl die bescheuerten If´s nehmen....

Nochmal vielen Dank für die schnellen Antworten

Modellbauer

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Oh, JavaScript, nicht Java.

Das hatte ich übersehen, da sind Strings durchaus möglich, ab Version 
1.2.

von Modellbauer (Gast)


Lesenswert?

Rufus t. Firefly schrieb:
> Das hatte ich übersehen, da sind Strings durchaus möglich, ab Version
> 1.2.

Und warum geht das trozdem nicht ?! ;)

von Modellbauer (Gast)


Lesenswert?

Wo kann ich die Version denn sehen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Läuft das in einem Webbrowser?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Versuch es probehalber mal mit einem String der nicht mit einer Zahl 
beginnt. Bei JS gibt es die schönsten "Dummheiten" wo man ewig nicht 
drauf kommt...

Rufus t. Firefly schrieb:
> Oh, JavaScript, nicht Java.
> Das hatte ich übersehen, da sind Strings durchaus möglich, ab Version
Unter Java hätte sich schon der Compiler beschwert ;)

Modellbauer schrieb:
> Wo kann ich die Version denn sehen?
http://javascript.about.com/library/bljver.htm

Ansosnten eventuell mal den Code "außenrum" herzeigen...

von Modellbauer (Gast)


Lesenswert?

Hallo nochmal,
1
switch((isiDevice[0] + isiDevice[1] + isiDevice[2])) 
2
{  
3
     case "7E18":
4
           log(device + " 3.1.3");
5
           break;
6
     default:
7
           log("Fehler: '"+isiDevice+"' nicht gefunden");
8
}

So funktioniert das jetzt...
Die Kommata werden nun nicht mehr berücksichtigt.

Aber danke für die Hilfe bis hier hin.

Den Code für die Versionsanzeige von JavaScript konnte ich im Übrigen 
auch noch so ganz gut gebrauchen.

Danke

Modellbauer

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.