Formulieren Sie eine Switch-Anweisung... Java-Programmieren?

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.

Woher ich das weiß:eigene Erfahrung

Unbekannte100 
Fragesteller
 05.11.2019, 18:42

wir hatten noch kein default

1
Unbekannte100 
Fragesteller
 05.11.2019, 18:44
@Newuser15

ahh ok danke hmm ich versuch das mal auf eclipse können sie mir das dann korriegieren wenn ich meine lösung hierhin schreibe

1
RakonDark  05.11.2019, 18:45

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.

2
Newuser15  05.11.2019, 18:52
@RakonDark

habe ich als Selbstverständlich angesehen, da er es in seinem beispiel ebenfalls unter dem case hingeschrieben hat ^-^

0
Unbekannte100 
Fragesteller
 05.11.2019, 19:08

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

1
Newuser15  05.11.2019, 19:21
@Unbekannte100

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

0
Unbekannte100 
Fragesteller
 05.11.2019, 19:23
@Newuser15

hahah okii ist ja gut dachte nur dass sie das vergessen haben

hmm also mit

int monate =

oder wie macht man das :/

1
Unbekannte100 
Fragesteller
 05.11.2019, 19:36
@Newuser15

ich muss glaub ich string m = nehmen aber was macht man nachdem gleichheitszeichen

1
public void wochentage(String m) {
  switch(m) {
    case "August":
      return 31;
    default:
      return -1;
  }
}

Unbekannte100 
Fragesteller
 05.11.2019, 18:42

wir hatten noch nicht default was ist das denn?

0
FinnB132  05.11.2019, 18:44
@Unbekannte100

wie ein else beim if statement, wenn kein case zutrifft dann wir der default case ausgeführt

2
LeonEliasW  05.11.2019, 19:30

Wenn jetzt noch die void in ein int geändert wird, klappt es auch.

0
Unbekannte100 
Fragesteller
 05.11.2019, 19:57
@LeonEliasW

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");
       
   }
 }
}
0
regex9  06.11.2019, 02:58
@Unbekannte100

1) Die Variable Monate ist nicht definiert.

2) Wenn der Juli angegeben werden würde, würde zweimal die 31 ausgegeben werden.

0
LeonEliasW  06.11.2019, 14:42
@Unbekannte100

Woher kommt denn dein Monate aus

String m = Monate;

Sonst musst du noch ein "break;" unter dem Sysout zu Juli setzen.

0