LocalDate toString und nach Split falsch "erkannt"?

Wuast

Bekanntes Mitglied
Tachchen,

ich möchte zu einem LocalDate den Monat rausfiltern und als String wiedergeben.
Dachte da an
Java:
    private LocalDate date = LocalDate.now();
    private String month;
    
    
    @Override
    public String toString() {
        return String.format("%s", date);   
    }
    
    public String getMonth() {       
        String[] splittedPart = date.toString().split("-");    //date format: YYY-MM-DD
        switch (splittedPart[1]) {
        case "01": month = "Januar";
        case "02": month = "Februar";
        case "03": month = "März";
        case "04": month = "April";
        case "05": month = "Mai";
        case "06": month = "Juni";
        case "07": month = "Juli";
        case "08": month = "August";
        case "09": month = "September";
        case "10": month = "Oktober";
        case "11": month = "November";
        case "12": month = "Dezember";
        }
        System.out.println(date);    //testing purpose
        System.out.println(month);    //testing purpose
        return month;
    }

Warum gibt mir die Konsole beim Testen folgendes aus?

2022-11-17 (heute)


Dezember (case 11 wird zu "Dezember"?)

Kann mich jemand erleuchten?
Danke 🙂
 
Lasse dir doch mal ausgeben was dir der Format Strings liefert.
System.out.println(String.format("%s", date));
 
Zuletzt bearbeitet:
An der Stelle sei auch noch die Switch expression erwähnt:, die Sinn machen, wenn man wirklich nur ein Switch braucht, um einer Variable einen neuen Wert zuzuweisen:
Java:
month = switch (splittedPart[1]) {
            case "01"-> "Januar";
            case "02" -> "Februar";
            case "03" ->  "März";
            case "04" ->  "April";
            case "05" ->  "Mai";
            case "06" ->  "Juni";
            case "07" ->  "Juli";
            case "08" ->  "August";
            case "09" ->  "September";
            case "10" ->  "Oktober";
            case "11" ->  "November";
            case "12" ->  "Dezember";
        };

Das setzt aber ein Java 12 (Preview) / Java 14 vorraus.

(Aber der Lösungsansatz von @mihe7 zeigt ja, dass sogar gar kein switch. notwendig ist!)
 
An der Stelle sei auch noch die Switch expression erwähnt:, die Sinn machen, wenn man wirklich nur ein Switch braucht, um einer Variable einen neuen Wert zuzuweisen:
Java:
month = switch (splittedPart[1]) {
            case "01"-> "Januar";
            case "02" -> "Februar";
            case "03" ->  "März";
            case "04" ->  "April";
            case "05" ->  "Mai";
            case "06" ->  "Juni";
            case "07" ->  "Juli";
            case "08" ->  "August";
            case "09" ->  "September";
            case "10" ->  "Oktober";
            case "11" ->  "November";
            case "12" ->  "Dezember";
        };
Auch das ist super Interessant.

Mal ganz allgemein: Wie kann ich üben, auch auf so Ideen wie Mihe zu kommen? Muss ich mich da durch die Docs wühlen oder ist das einfach eine Frage der Zeit?
 
Mal ganz allgemein: Wie kann ich üben, auch auf so Ideen wie Mihe zu kommen? Muss ich mich da durch die Docs wühlen oder ist das einfach eine Frage der Zeit?
Immer, wenn Du etwas mit einer Klasse machst oder irgendwas in Code siehst auch einmal die Dokumentation überfliegen.
Und wenn Du die Zeit hast, dann spiel etwas etwas herum.

Wenn man sich mit Java beschäftigt, dann stolpert man automatisch über diverse Dinge. Und eine Beschäftigung mit Java kanna uch ein mitwirken in einem Forum sein 🙂 Fragestellungen Anderer selbst einmal recherchieren und so. Und dann etwas herum spielen ob man die Lösung hat oder nicht. Das Doing ist halt auch sehr wichtig.
 

Zurück
Oben