Switch mit String

Milkaselnuss

Aktives Mitglied
Im Internet habe ich gelesen, dass Switch mit Java 7 nun auch String unterstützt.
Jetzt hab ich das mal ausprobieren wollen und Eclipse lässt es aber nicht zu, das ja eigentlich kein String in Switch geht. Jetz bin ich verwirrt. Woran kann das liegen, dass das doch nicht funktioniert?
 
java 7 hab ich. Das mit Eclipse könnte sein.
Das ich da dran ned gedacht hab -.-


EDIT: muss ich beim updaten von eclipse auf irgendwas achten? Nicht, dass aufeinmal meine workbench leer ist.
 
Du meinst deinen Workspace (nicht die Workbench)? Also ich hab normalerweise meinen Workspace getrennt von den Eclipse-Programmdaten. Und neu installieren von Eclipse heisst ja eigentlich nur, die Programmdaten zu entpacken, dorthin wo du es haben möchtest. Dürfte normalerweise deinen Workspace nicht berühren.
 
So jetz hab ich leider immernoch ein Problem.(eig sogar 2)
Es wird mir nun
"Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enums are permitted"

und bei meinem Eclipse sind ziemlich viele Auswahlmöglichkeiten grau.
Und unter new sind beispielsweisen garkeine Auswahlmöglichkeiten.
 
So jetz hab ich leider immernoch ein Problem.(eig sogar 2)
Es wird mir nun
"Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enums are permitted"
Wo wird das angezeigt?

Und unter new sind beispielsweisen garkeine Auswahlmöglichkeiten.
Wo hast du bei new Auswahlmöglichkeiten? Im Editor?

Evtl. musst du bei Eclipse auch noch das Java 7 einstellen.
 
das wird mir bei dem beginn vom switch angezeigt

Java:
switch (verschl){  // In dieser Zeile wird mir der Fehler angezeigt

	case " ":     ;            
//Hier kommen die Cases mit String, die ich allerdings noch nicht gemacht habe

}




EDIT: "verschl" ist der String der aus einen JOptionPane.showInputDialog gewonnen wird.
 
"Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enums are permitted"

Das sagt doch schon die Fehlermeldung, dass unter 1.7 Strings nicht bei switch benutzt werden können. Wie schon gesagt, musst du wohl bei Eclipse noch in den Einstellungen auf Java 7 umstellen.
 
Und mir werden immernoch viele Sachen nicht angezeigt. Wenn ich z.b. oben in der Menüleiste auf New gehe steht da "No Applicable Items". Bei Edit fehlen auch viele Sachen wie z.b. Die Find und Find/Replace Funktionen. Bei Refactor fehlt so gut wie alles.
 
In den Projekteinstellungen musst du Source- und Targetlevel des Projektes noch auf Java 7 umstellen.

Unter Project-> Properties->Java Compiler-> Compiler compliance level 1.7
und bei "Use default compliance settings" hab ich ein Häkchen. Das is doch dann richtig oder?

Und wenn ich das Programm laufen lassen will steht in der Console:

[WR]java.lang.UnsupportedClassVersionError: verschluessler/Verschluessler : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Exception in thread "main" [/WR]



EDIT: Fehler evtl. selbst gefunden
 
Ja genau das wars auch.
Man muss ja bei Java die alten Versionen manuell deinstallieren, da das nicht automatisch erfolgt.
Folglich hatte ich noch die alten Versionen auf dem Rechner. Ich hab dann alle Versionen deinstalliert und nur die neue JDK und jetzt funktioniert das Programm (zumindest fast) und in Eclipse ist auch wieder alles auswählbar.
 
Du kannst auch einfach definieren welche Version du nutzen willst. Ich z.B. habe auch eine 1.5, eine 1.6 und eine 1.7 installiert, aber Eclipse nutzt konsequent die 1.7 JVM.
 
Du must in Eclipse unter "Run"->"Run Configurations"->JRE, wie auf dem Bild zu sehen, den Pfad auf JRE7 umstellen.

Dann auf Apply klicken.

Jetzt hast du Java7 zur Auswahl, falls du ein Projekt unter JRE6 begonnen hast, ist hier auch immernoch JRE6 eingestellt.

Eclipse weist dich hier darauf hin und bietet dir mit nur einem Klick das Update an.
Dauert ca. 3sek und du kannst loslegen.

LG,
Alex
 

Anhänge

  • classpath.jpg
    classpath.jpg
    60,3 KB · Aufrufe: 37
  • compliance.jpg
    compliance.jpg
    33,1 KB · Aufrufe: 28
Gut nochmal danke für eure Hilfe.
1 Problem habe ich allerdings noch mit den String im switch.

Java:
String verschl = JOptionPane.showInputDialog("Eingabe: ",JOptionPane.OK_OPTION);

switch (verschl){
						case "ich": text1 = "HXN";
						case "du": text1 = "NX";
						case "er": text1 = "YP";
						case "sie": text1 = "EFG";
						case "es": text1 = "EX";
						case "wir": text1 = "KUS";
						case "ihr": text1 = "SPF";
						case "1": text1 = "1";
						default: text1 = verschl + " ";
						case "2": text1 = "2";
}
Ausgabe.setText(Ausgabe.getText() + text1);
//Ausgabe ist ein Label

Wenn ich jetzt "2" eingebe wird mir später auch "2" angezeigt. Gebe ich allerding "ich" an wird mir nicht "HXN" sondern auch "2" angezeigt. Und ich weiß nicht wieso :-(
 
Ich glaube da fehlen auch noch in jedem case die break Anweisungen am Ende.
Sonst läuft er jede, ab Eingabefall, folgende Anweisung durch und gibt Murcks aus.

Lg,
Alex
 
Stimmt. Jetz funktionierts. Damit dürfte das (hoffentlich) mein letztes Problem in diesem Thread gewesen sein.
Nochmal ein herzliches Danke an alle, die mir hier geholfen haben!
 
Das geht jetzt ???
Habe immer irgendwelche workarounds getüftelt.
Und mich gewundert, dass, das nicht geht, andere Sprachen nehmen Strings als switch Argument schon lange.
Aber nun gut ;-)
BTW: Haltet Ihr es für sinnvoll, immer neuste Java Versionen zu nutzen ? Weil der User muss sein JVM ja auch immer updaten und wenn ers nicht tut gehts nicht.
 
Hm, bin da evtl. nicht uptoDate.
Alls ich damals, das erste mal dachte ich lern jetzt Java, war zwar die Sprache schon relativ mächtig
aber ziemlich abhängig from User. Muss dazu erwähnen, dass wir von 15 Jahren reden u. ich Applet Fan bin.
Jetzt bin ich zurück und erfreu mich an den ganzen neuen Klassen, habe aber die ganze Umsetzungs Technik nicht verfolgt, weiss nur das technisch gesehen, jeder der in den letzen 10 Jahren einen PC in einem Elektronik Discounter gekauft hat, das aktuelle Windoof mit der eben aktuellen Java Version hat u. hier und da zum Update gebeten wird u. User die Ihren PC selbst aufsetzen bzw. andere Betriebs Systeme nutzen, wissen was Java ist und das entspannt selbst installieren. Deshalb hab ich mich jetzt erst wieder voll reingekniet, schwerpunkt auch Server Java, da liegts ja eh an mir welche Version die Engine hat.
Ha ja, dann passt ja alles 🙂
 

Neue Themen


Zurück
Oben