Nächstes Schaltjahr mit Java berechnen?
Abend, sitze gerade vor einer Aufgabe und komme nicht weiter! Ich soll in Java eine Methode schreiben, die das nächstliegende Schaltjahr berechnet. Also wenn der Nutzer eine Jahreszahl z.B: 2016 eingibt soll 2020 als Schaltjahr zurückgeben!
Mein Code zur Berechnung eines Schaltjahres sieht so aus:
public void naechstesSchaltjahr()
{
IO io = new IO();
io.println ("Geben Sie eine Jahreszahl ein, um herauszufinden, welches Jahr das nächstliegendste Schaltjahr ist"); jahr = io.readInt ();
if (jahr % 4 == 0)
{
if (jahr % 400 != 0)
{
if (jahr %100 == 0)
{
io.println ("");
io.println ("false");
}
else
{
io.println ("");
io.println ("true");
}
}
else
{
io.println ("");
io.println ("true");
}
}
else
{
io.println ("");
io.println ("false");
}
}
2 Antworten
Ganz primitiv könntest du die Jahreszahl einfach so lange hochzählen, bis sie ein gültiges Schaltjahr ist. Das gibst du dann zurück:
private static boolean isLeapYear(int year) {
return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));
}
private static int nearestLeapYear(int year) {
while (!isLeapYear(year)) year++;
return year;
}
public static void main(String[] args) {
System.out.println(nearestLeapYear(2015)); // -> 2016
}
/**
* checks if a given year is a leap year
*
* @param year
* the year to check
* @return true if the {@code year} is a leap year, false otherwise
*/
private static boolean isLeapYear(int year) {
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
return true;
else
return false;
}
Du kannst nun selbst schauen, in wie fern sich die Funktionen unterscheiden.