Erste Schritte Hilfe bei Aufgabe

konoha

Bekanntes Mitglied
Ich soll ein programm schreiben das eine methode hat, die irgendein jahr als parameter erhält und dessen nachfolgenden schaltjahr bestimmen soll. Nach langem überlegungen stehe ich völlig auf dem Schlauch. Mir fälllt kein lösungsweg ein. Das größte problem liegt daran das ich den "nachfolgenden" schaltjahr bestimmen soll.

Kann jemand bitte helfen?
 

Anhänge

  • rps20151107_183548.jpg
    rps20151107_183548.jpg
    127,4 KB · Aufrufe: 32
Java:
 public static int calculateNextLeapYear (int year){
          int berechneteJahresZahl;

return berechneteJahresZahl;

}
 
Also ich habe es wie folgt geschrieben:

Java:
 public static int calculateNextLeapYear (int year){
          while (year % 4!= 0 || year % 400!= 0 || year % 100!= 0 && year % 400 == 0 ){
          year = year+1;
         
          }
                 
         return year;

zu meinem bedauern erhalte ich für 2000 als parameter den wert 2000
und bei 2001 oder höher erhalte ich immer 2400.

Was ist an der Bedingung falsch?
 
Ich würde das gar nicht mit einer Schleife machen. Nimm doch einfach den Modulo und addiere 4 Jahre. Dann fragst du aber ob das Modulo 400 = 0 ist und wenn, dann schaust du noch nach ob das Modulo 100 = 0 ist und entsprechend addierst du nochmal 4 Jahre oder nicht.

Gruß

Claus
 
leider hat unser lehrer verlangt das wir es explizit mit der while schleife machen. kannst du mir nicht bitte verraten was an der bedingung bzw. anweisungsblock falsch ist?
 
Naja dann Must du dir nochmal durchlesen was der Unterschied zwischen logischem Oder und und ist und dann gehst du deine while Bedingung einfach nochmal durch.
 
Mengenlehre hatte ich schon, dennoch verstehe ich nicht was das mit der Bedingung zu tun hat oder warum das nicht funktioniert?
 
Deine while Bedingung stimmt einfach nicht! Hat was mit Klammersetzung und Negierungen zu tun.
Hier hast du einen Auszug aus der JDK Klasse Year wie die berechnet wird:
Java:
public static boolean isLeap(long year) {
  return ((year & 3) == 0) && ((year % 100) != 0 || (year % 400) == 0);
}
 
Hallo flown,

kannst du bitte die "negierung und klammersetzung" an meiner schleife verdeutlichen?

Und wieso steht bittenim auszug (year & 3)
 
Nope das kann ich nicht bei deiner while-Schleife durchführen. Da ich dir sonst das Glücksmoment vorwegnehme, eine Aufgabe selbst gelöst und auch noch ein paar Erkenntnisse erlangt zu haben.

Dieses & ist eine die UND-Funktion für Bit-Operationen und ist Äquivalent zu year % 4 == 0.
 
ich kriege es nicht hin, habe jetzt die klammern angesetzt, aber das ergebnis bleibt gleich. wo und wie soll ich denn bitte die negation angeben?
 
Mir ist klar wie das rein mathematisch geht. Aber wie setzte ich das um in java?
Ich weiß es verstößt gegen deine prinzipien jemand die aufgabe vorzumachen. Aber kannst du hier bitte nicht einmal eine ausnahme machen. Sitze schon eine weile an der aufgabe und mehr als eine große portion depression hat es nichts gebracht.🙁
 
Ich hab dir schon den Auszug zur Berechnung von Schaltjahren gepostet. Jetzt brauchst du nur noch:
Java:
public static long nextLeapYear(long year) {
  while(!isLeap(year)) {
    year++;
  }
  return year;
}
 
Oder so wenn du es mit deiner Schleife machen willst:

Code:
    public static int calculateNextLeapYear(int year) {
        while (!((year % 4) == 0) && ((year % 100) != 0 || (year % 400) == 0)) {
            year = year + 1;
        }

        return year;
    }
 

Zurück
Oben