Formulieren Sie eine Switch-Anweisung... Java-Programmieren?
Formulieren Sie eine Switch-Anweisung, die für eine Variable m vom Typ String die Anzahl der Wochentage ausgibt (ohne Berücksichtigung von Schaltjahren), falls m ein String der Form „Januar“, „Februar“, „März“, „April“, „Mai“, „Juni“, „Juli“, „August“, „September“, „Oktober“, „November“ oder „Dezember“ ist.
hey hilfe wie macht man das
ich weiß dass es so aufgebaut ist aber wie mach ich das
switch() {
case ;
break;
4 Antworten
Du übergibst an Switch einen konstanten Ausdruck, wie eine Zeichenkette (=String), und definierst dann Fälle für Werte, die dieser konstanter Ausdruck annehmen kann.
Wenn du in die offizielle Tutorials von Java schaust, findest du sogar ein Beispiel, wo das für alle Monate gemacht wird: The switch Statement
Das Schlüsselwort "break" signalisiert hierbei, dass du fertig mit deinem Fall bist und aus dem Switch wieder rausgehen möchtest. Wenn du also davor etwas machen möchtest, wie die Anzahl der Wochentage ausgeben, muss das vor dem "break" passieren:
case "someMonth": System.out.println(someNumber); break;
Die Ausgabe machst du mit System.out.println(myString).
Das könnte z.B. so aussehen:
public static int getDaysPerMonth(String month){
int days = -1;
switch(month){
case "Januar": days = 31; break;
case "Februar": days = 28; break;
...
}
return days;
}
Natürlich kannst du auch direkt den Integer returnen und dir damit die Variable days sowie die break's sparen:
public static int getDaysPerMonth(String month){
switch(month){
case "Januar": return 31;
case "Februar": return 28;
...
default: return -1;
}
}
Statische Möglichkeit:
switch(m)
case "Januar": System.out.println("31");
case "Februar": System.out.println("28");
default: System.out.println("Kein Monat");
etc...
Wenn du es Dynamisch machen willst, kannst du dich mal über die Klasse Calendar informieren.
habe ich als Selbstverständlich angesehen, da er es in seinem beispiel ebenfalls unter dem case hingeschrieben hat ^-^
hinter switch (m) fehlt eine geschleifte offene klammer :D
und bei eclipse wird gesagt das m bei switch nicht als variable definiert ist :/
wie muss ich das ändern
Ich habe nie behauptet, dass der Syntax richtig ist, ich wollte dir nur die richtung zeigen :D Du musst eine Variable m haben, welche eben den entsprechenden Monatsnamen enthält, kannst du z.B. durch eine Eingabeaufforderung festlegen oder du machst es statsich
hahah okii ist ja gut dachte nur dass sie das vergessen haben
hmm also mit
int monate =
oder wie macht man das :/
ich muss glaub ich string m = nehmen aber was macht man nachdem gleichheitszeichen
Das wäre dann die statische möglichkeit z.B. string m = "August";
Default wird benutzt, wenn keine der Bedingungen drüber zutrifft
ahh ok danke hmm ich versuch das mal auf eclipse können sie mir das dann korriegieren wenn ich meine lösung hierhin schreibe
public void wochentage(String m) {
switch(m) {
case "August":
return 31;
default:
return -1;
}
}
hii hilfe
ich hab mal was versucht
aber iwie klappt das nicht :(
das string m= Monate ist falsch glaub ich aber wie mach ich das richtig
public class BeispielMonate {
public static void main(String[] args) {
String m= Monate;
switch(m) {
case "Januar": System.out.println("31");
break;
case "Februar": System.out.println("28");
break;
case "März" : System.out.println("31");
break;
case "April": System.out.println("30");
break;
case "Mai": System.out.println("31");
break;
case "Juni": System.out.println("30");
break;
case "Juli": System.out.println("31");
case "August": System.out.println("31");
break;
case "September": System.out.println("30");
break;
case "Oktober": System.out.println("31");
break;
case "November": System.out.println("30");
break;
case "Dezember": System.out.println("31");
}
}
}
1) Die Variable Monate ist nicht definiert.
2) Wenn der Juli angegeben werden würde, würde zweimal die 31 ausgegeben werden.
Woher kommt denn dein Monate aus
String m = Monate;
Sonst musst du noch ein "break;" unter dem Sysout zu Juli setzen.
wie ein else beim if statement, wenn kein case zutrifft dann wir der default case ausgeführt
und ein break wäre sinnvoll das spart nehmlich zeit , warum noch mehr tests durchführen wenn das ergbnis schon bekannt ist . ineffizient lohnt nicht wenns ums programmieren geht.