www.mikrocontroller.net

Forum: PC-Programmierung Switch Case Anweisung


Autor: Modellbauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zuasmmen,

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

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

Warum funktioniert das nicht?
Was mache ich falsch?

Vielen Dank im Voraus

Modellbauer

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

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

Autor: Modellbauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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/nu...

Autor: Modellbauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, JavaScript, nicht Java.

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

Autor: Modellbauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?! ;)

Autor: Modellbauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo kann ich die Version denn sehen?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läuft das in einem Webbrowser?

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Modellbauer (Gast)
Datum:

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

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.