Java switch-Anweisung um zwei Variablen?
Ich bin auf der Suche nach einem Weg, um zwei strings mit einem einzigen Schalter, ich denke das ist unmöglich innerhalb von Java.
Hier einige pseudo-code, der die Art von Sache, die ich erreichen möchte mit einem Schalter nur.
int s1Value = 0;
int s2Value = 0;
String s1 = "a";
String s2 = "g";
switch (s1 || s2) {
case "a": s1value = 0; s2value = 0; break;
case "b": s1value = 1; s2value = 1; break;
case "c": s1value = 2; s2value = 2; break;
case "d": s1value = 3; s2value = 3; break;
case "e": s1value = 4; s2value = 4; break;
case "f": s1value = 5; s2value = 5; break;
case "g": s1value = 6; s2value = 6; break;
}
s1
unds2
sind nichtString
!- Ich glaube, Sie verstehen nicht, die syntax der Switch-Anweisung,..
- Ich kopieren und einfügen das falsche Teil 🙂 Bearbeitet...
- Welche Werte kann
s1
unds2
nehmen ? - Bei der Zuweisung den gleichen Wert für beide Variablen in jedem Fall.. warum nicht geben Sie einfach ein, und machen s2value gleich s1value?
- a, b, c, d, e, f oder g
- Ja, aber dies war nur Beispiel, was passiert, wenn ich wollte einen anderen Wert für jeden String für einen einzelnen Fall?
- Ich sehe. Entschuldigung.
- In deinem Beispiel, die
case
Sie erwarten, zu führen ? beidea
undg
? - Sorry Nein, denn es bricht. Sagen, wenn s1 != "a" und s1 != "g" dann würde es tun, für "g", da die logische oder sehen würde, dass s2 = "g"
- Was ist, wenn s1 ist "g" und s2 "ein"? Welche Ergebnisse erwartest du dann?
- Wenn s1 "g" und s2 "ein" dann wird es ausführen Fall "a" und dann brechen Sie aus dem Schalter, s1Value 0 und s2Value 0.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit einem einzigen Schalter pro Ihre Anforderung ist nicht möglich.
Dies ist so nah wie Sie gehen, um zu bekommen, die mit Java.
Der einzige Weg, das zu tun, mit einem einzigen Schalter ist die erste Zusammenführung der beiden Werte finden, die mit der höchsten Priorität, und anwenden Sie den Schalter auf das Ergebnis. In Ihrem Beispiel, das minimum von s1 und s2, und der Wechsel auf das Ergebnis.
Da "a" bis "g" sind ein Beispiel, werden Sie brauchen, um einige sinnvolle Weg, um die Rangfolge der realen Werte ersten.
Haben Sie als nicht mit der Schalter Erklärung, sondern stattdessen mithilfe von lookup-Tabellen?
Wenn Sie brauchte einen anderen Satz von Werten der s2Value dann könnte man konstruieren Sie eine zweite Karte zu ziehen diese aus.
Da Sie wollten mit einem Schalter ich nehmen, dass meine mögliche Kandidaten und Werte ist eine Feste, bekannte die bei der Entwicklung von Zeit-Liste, also mit einem statisch initialisiert Karte wie dieser sollte das kein Problem sein.
Können Sie tun, was Sie wollen, ohne mit einem Schalter, einfach zu schreiben, dass:
Was ich nicht ganz verstehe ist, was meinst du mit
Wollen Sie so etwas tun?
UPDATE
In den Kommentaren, Sie schrieb:
s1="g" und s2="g" vor dem Eintritt in den switch, dann der einzige Fall, der wird zu true ausgewertet, ist der Fall "g" und so beide s1Value und s2Value werden 6 und beenden Sie dann den Schalter.
So, ich denke, du sagst, dass s1 und s2 sind initialisiert mit dem gleichen Wert, also:
Sollte dies tun, was Sie wollen
UPDATE 2
mit s1="a" und s2="d" wir prüfen den Fall "a", mit s1="c" und s2="b" wir prüfen den Fall "b"
Versuchen Sie dies:
Es sollte den trick tun, testen Sie es und lassen Sie mich wissen, wenn es funktioniert