Schaltjahre, Klassenmethode, Parametertyp

andrade

Mitglied
Hallo zusammen,
ich lern gerade für eine Prüfung und habe dabei die folgende Aufgabe gelöst.
Könnt ihr vielleicht einmal drüber schauen, ob das so wohl richtig ist bzw. ob ich etwas vergessen habe? Danke!

Java:
/* Aufgabe: a)Schreiben Sie eine Methode, die für ein beliebiges Jahr entscheidet, ob es sich um ein
* Schaltjahr handelt, und das Ergebnis als boolschen Wert zurückliefert.
* b) Schreiben Sie die Methode so, dass sowohl der Parameter- als auch Rückgabetyp echte Java-Klassen sind.
* c) Realisieren Sie diese Berechnung, falls möglich, als eine Klassenmethode. Begründen Sie kurz, warum
* das hier möglich ist bzw. nicht möglich ist.
*/
public class Schaltjahre
{
   public static Boolean bestimmeSchaltjahr(Integer jahr) {
       if ((jahr % 4 ==0 && jahr % 100 != 0) || (jahr % 400 == 0))
            return Boolean.TRUE;
       else
            return Boolean.FALSE;
    }
}

/* zu c) Ja, ist möglich! Weil das Ergebnis der Berechnung nur von den Paramatern
* und nicht vom Objektzustand abhängt. */
 

Dukel

Top Contributor
Kommt denn das richtige Ergebnis heraus? Teste es doch mit unterschiedlichen Schalt- und Nicht-Schalt-Jahren. (evtl. als Unit Test)
 
K

kneitzel

Gast
Also das sieht erst einmal recht gut aus. Ein paar Hinweise hätte ich noch:
- Dein Parameter ist eine Referenz (Der Typ ist eine Klasse und kein simpler Datentyp). Daher kann dieser null sein. Dies solltest Du prüfen, ehe Du diesen nutzt.
- Du gibst direkt das Ergebnis der Bedingung zurück. Daher könntest Du das if weglassen und direkt die Bedingung zurück geben. Durch den Rückgabetyp Boolean wird dein boolean automatisch umgewandelt ("boxing", der einfache Wert wird in eine Instanz einer Klasse, also sozusagen in eine Box, gesteckt). Wenn Du dies verdeutlichen willst, könntest Du noch ein (Boolean) davor setzen, aber das ist unnötig und wir von einigen IDEs dann auch entsprechend angezeigt:

Code:
public static Boolean istSchaltjahr(Integer jahr) {
    if (jahr == null)
        throw new IllegalArgumentException("Argument jahr cannot be null!");
    
    return (Boolean)(jahr % 4 ==0 && jahr % 100 != 0) || (jahr % 400 == 0);
}

Wie gesagt: das (Boolean) beim return kann (und in meinen Augen sollte) weg.

Konrad
 
K

kneitzel

Gast
Deine Lösung war aber auch schon super! Ich denke bei einer Aufgabe hättest Du damit schon volle Punktzahl gehabt. Die zwei Kleinigkeiten gehen halt mehr Richtung Clean Code. Und beim zweiten Punkt hätte ich in der Uni fast die Angst, dass derjenige, der die Aufgabe kontrolliert, das Autoboxing nicht kennt und dann bemängelt, dass ich da evtl. ein boolean zurück gebe.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Schaltjahre berechnen! Java Basics - Anfänger-Themen 1
D Schaltjahre problem Java Basics - Anfänger-Themen 2
U Wie ein Attribut von einer Klassenmethode in der Klasse speichern= Java Basics - Anfänger-Themen 2
R Implementieren einer iterativen und rekursiven Klassenmethode. Java Basics - Anfänger-Themen 1
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
S Klassenmethode ohne static Java Basics - Anfänger-Themen 2
K Klassenmethode mit übergebenen Parameter speichern Java Basics - Anfänger-Themen 7
W Neue Klassenmethode implementieren.. Java Basics - Anfänger-Themen 6
J Klassen Klassenmethode um Variable zu ändern Java Basics - Anfänger-Themen 7
D Klassenmethode: Befehl erkennen, dann int zurückgeben Java Basics - Anfänger-Themen 2
D in Mainmethode auf Werte aus Klassenmethode zugreifen Java Basics - Anfänger-Themen 9
K Rückgabewert einer Klassenmethode Java Basics - Anfänger-Themen 7
H Innerhalb eines Package wird eine Klassenmethode nicht gefunden. Java Basics - Anfänger-Themen 2
T Erste Schritte Klassenmethode für Zahlentupel Java Basics - Anfänger-Themen 2
S OOP Klassenmethode in andere Methode? Java Basics - Anfänger-Themen 5
F Klassenmethode Arrays.sort(Object[]a) Java Basics - Anfänger-Themen 2
B Klassenmethode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 8
D Methoden ParameterTyp Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben