Jim: "Case < Wert" bzw. "Case > Wert" möglich?

Hallo!

Wir haben in einem JavaScript per
Case "Zahl":
ganze Zahlen abgefragt und auch default am Schluss zugewiesen.

Kann man auch "<" oder ">" mit
der Case Abfrage verwenden?

Also z.B.
Case <1

Wir sind von folgenden Script ausgegangen:

<script type="text/javascript">
<!--
var Eingabe = window.prompt("Geben Sie eine Zahl zwischen 1 und 4 ein:","");
switch(Eingabe) {
 case "1":
 alert("Sie sind sehr bescheiden");
 break;
 case "2":
 alert("Sie sind ein aufrichtiger Zweibeiner");
 break;
 case "3":
 alert("Sie haben ein Dreirad gewonnen");
 break;
 case "4":
 alert("Gehen Sie auf allen Vieren und werden Sie bescheidener");
 break;
 default:
 alert("Sie bleiben leider dumm");
 break;
}
// -->
</script>

Gruß,
Jim

  1. Jim,

    Kann man auch "<" oder ">" mit
    der Case Abfrage verwenden?

    1. Warum schaust du nicht nach? (So schwer zu finden: switch/)

    2. Warum nimmst du nicht if mit else-Zweig?
    Gunnar

    --
    „Solang wir noch tanzen können
    und richtig echte Tränen flennen,
    ist noch alles offen,
    ist noch alles drin.“
    (Gundermann)
  2. Warum nciht?

    <script type="text/javascript">
    <!--
    var Eingabe = window.prompt("Geben Sie eine Zahl zwischen 1 und 4 ein:","");
    switch(Eingabe) {
     case "<1":
     alert("Sie sind sehr bescheiden");
     break;
     case "<2":
     alert("Sie sind ein aufrichtiger Zweibeiner");
     break;
     case "<3":
     alert("Sie haben ein Dreirad gewonnen");
     break;
     case "<4":
     alert("Gehen Sie auf allen Vieren und werden Sie bescheidener");
     break;
     default:
     alert("Sie bleiben leider dumm");
     break;
    }
    // -->
    </script>

    1. Tag Hannes.

      Warum nciht?

      Weil dein Beispiel beim simplen Eingeben einer Zahl zwischen 1 und 4 immer im default-Zweig landen muss, es sei denn, es wurde "<1" eingetippt.

      Siechfred

      --
      »Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«
      1. Tag Siechfred.

        Weil dein Beispiel beim simplen Eingeben einer Zahl zwischen 1 und 4 immer im default-Zweig landen muss, es sei denn, es wurde "<1" eingetippt.

        Richtig, das ist der Sinn einer Case Anweisung und die Lsg auf sein Problem wie ich es verstanden habe^^

        Hannes

  3. Tag Jim.

    Kann man auch "<" oder ">" mit
    der Case Abfrage verwenden?

    Ja, aber nicht so:

    Case <1

    Sondern so:

    <script type="text/javascript">
    <!--
    var Eingabe = prompt("Zahl: ", "");
    switch(isNaN(Eingabe)) {
      case true:
        alert("Keine gueltige Zahl");
        break;
      case false:
        switch(Eingabe >= 10) {
          case true:
            alert("Eingabe ist groesser/gleich 10");
            break;
          case false:
            alert("Eingabe ist kleiner 10");
            break;
        }
    }
    // -->
    </script>

    »switch« kann so ziemlich alles sein (Variable, Objekt oder wie in deinem Fall eine Bedingung), in Abhängigkeit davon ergibt sich die Notation der case-Anweisung. In meinem Beispiel sind zwei switch-Abfragen verschachtelt, in der ersten wird die Eingabe daraufhin untersucht, ob es eine Zahl ist, in Abhängigkeit davon wird eine zweite switch-Abfrage notiert, die eine gültige Zahl mit 10 vergleicht. Das Ganze deshalb so umständlich, da der Wert, der Case zugewiesen wird, das Ergebnis einer Operation sein muss (im vorliegenden Beispiel true oder false), nie die Operation selber, dafür ist switch da.

    Siechfred

    --
    »Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«
    1. switch(isNaN(Eingabe)) {
        case true:
          alert("Keine gueltige Zahl");
          break;
        case false:

      Siechfred,
      Komische Art hast du da, if then else aufzuschreiben.
      Gunnar

      --
      „Solang wir noch tanzen können
      und richtig echte Tränen flennen,
      ist noch alles offen,
      ist noch alles drin.“
      (Gundermann)
      1. Tag Gunnar.

        Komische Art hast du da, if then else aufzuschreiben.

        Ich habe einfach nur die Frage beantwortet und gehe davon aus, dass der OP des Lesens mächtig ist und so selber erkennen kann, dass switch-case hier nicht der galanteste Weg ist.

        Siechfred

        --
        »Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«
  4. Hallo,

    Kann man auch "<" oder ">" mit
    der Case Abfrage verwenden?

    Ja, z. B. so:

    var Eingabe = window.prompt("Geben Sie eine Zahl zwischen 1 und 4 ein:","");
    switch(true) {
     case (Eingabe == 1):
     alert("bla");
     break;
     case (Eingabe >= 2 && Eingabe <=4):
     alert("blub");
     break;
     default:
     alert("blablub");
     break;
    }

    MfG, Thomas

    1. Hallo Thomas,

      jetzt bin ich baff.
      Ich bin mit den syntaktischen Feinheiten von Javascript nicht hundertprozentig sattelfest, aber das hat mich bisher nicht gestört, weil ich mich dann an der ähnlichen, aber in den meisten Fällen strengeren Syntax von C orientiert habe.

      Und deshalb irritiert mich das hier gewaltig:

      switch(true) {
      case (Eingabe == 1):
      alert("bla");
      break;
      case (Eingabe >= 2 && Eingabe <=4):
      alert("blub");
      break;
      default:
      alert("blablub");
      break;
      }

      Ich war immer der Meinung, hinter 'case' dürften nur Konstanten als Selektor stehen, nicht jedoch Variablen oder gar komplexe Ausdrücke.
      Oder ist das in JS nicht so?

      In stiller Verwunderung,

      Martin

      1. Hallo,

        Ich war immer der Meinung, hinter 'case' dürften nur Konstanten als Selektor stehen, nicht jedoch Variablen oder gar komplexe Ausdrücke.
        Oder ist das in JS nicht so?

        Lt. ECMAScript-Spezifikation sind auch Ausdruecke zulaessig.

        MfG, Thomas

    2. Tag Thomas.

      Kann man auch "<" oder ">" mit
      der Case Abfrage verwenden?
      Ja, z. B. so:
      [...]

      Oh, danke für die Aufklärung :-)
      Allerdings muss man wissen, dass es in diesem Fall switch(true) statt switch(eingabe) heißen muss.

      Siechfred

      --
      »Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«