Hallo, ich muss Planet "A", der sich genau wie die Erde ist. Tage,
Monate, Schaltjahr sind genauso wie bei uns, die Kalender sind gleich.
Aber ist der Mond schon etwas schneller und braucht exakt 29 Tage für
einen Umlauf. Am 1.Januar 2013 sei dort Vollmond. N = ersten N Monate(in
jeweils einer Zeile) ausigbt, in denen es 2x Vollmond gibt.
Dies sollte das Ergebnis:
Aufruf & Ausgabe:
$ java 2FullMoon 2
2013, January
2014, March
ich habe versucht die tage jeweils getrennt fuer jahre, monate und den
mondzyklus zu zaehlen. man muss dabei auf schaltjahre bei den jahren
und beim monat februar achten. ich setze die tagesnummer wieder auf
1 zurueck, wenn der entsprechende zyklus um ist.
hierbei muss ich irgendwo fehler gemacht haben. Villeicht kann mir ja einer helfen, dankbar wäre ich jedenfalls dafür.
Alles anzeigen
Monate, Schaltjahr sind genauso wie bei uns, die Kalender sind gleich.
Aber ist der Mond schon etwas schneller und braucht exakt 29 Tage für
einen Umlauf. Am 1.Januar 2013 sei dort Vollmond. N = ersten N Monate(in
jeweils einer Zeile) ausigbt, in denen es 2x Vollmond gibt.
Dies sollte das Ergebnis:
Aufruf & Ausgabe:
$ java 2FullMoon 2
2013, January
2014, March
ich habe versucht die tage jeweils getrennt fuer jahre, monate und den
mondzyklus zu zaehlen. man muss dabei auf schaltjahre bei den jahren
und beim monat februar achten. ich setze die tagesnummer wieder auf
1 zurueck, wenn der entsprechende zyklus um ist.
hierbei muss ich irgendwo fehler gemacht haben. Villeicht kann mir ja einer helfen, dankbar wäre ich jedenfalls dafür.
Quellcode
- public class 2FullMoon {
- public static boolean schaltjahr ( int jahr ) {
- if ( jahr % 4 == 0 ) {
- if ( (jahr % 100 == 0) && (jahr % 400 != 0) ) {
- return false;
- }
- return true;
- }
- return false;
- }
- public static void main ( String args [] ) {
- int num;
- int jahr = 2013;
- int d; //day
- int dm = 1; //Tage Monate
- int vm = 0; //vollmond
- int mon; //Monate
- int m; //
- int dy = 1; // tag-Jahr
- int n; //Anzahl der Vollmonde in einem Monat
- num = 2;
- for ( d = 1 , m = 0, mon = 1, n = 0; true; d++, dm++, dy++) { //Schaltjahr
- if ( (dy > 1) && (dy % 365 == 1) && ! schaltjahr( jahr ) ) {
- jahr++;
- dy = 1;
- }
- if ( (dy > 1) && (dy % 366 == 1) && schaltjahr( jahr ) ) { //keine Schaltjahr
- jahr++;
- dy = 1;
- }
- if ( (dm > 1) && (dm == 32) ) {
- switch ( mon ) {
- case 1: //January 31.
- case 3: //March 31.
- case 5: //May 31.
- case 7: //July 31.
- case 8: //August 31.
- case 10: //October 31.
- mon ++;
- break;
- case 12: //December 31.
- mon = 1;
- dm =1;
- break;
- }
- }
- if ( (dm > 1) && (dm == 31) ) {
- switch ( mon ) {
- case 4: //April 30.
- case 6: //June 30.
- case 9: //September 30.
- case 11: //November 30.
- mon ++;
- dm =1;
- break;
- }
- }
- if ( (dm > 1) && (dm % 28 == 1) && (mon == 2) && ! schaltjahr( jahr ) ) {
- mon ++; //Schaltjahr
- }
- if ( (dm > 1) && (dm % 29 == 1) && (mon == 2) && schaltjahr( jahr ) ) {
- mon ++; //keine Schaltjahr
- }
- if ( d % 29 == 1 ) {
- vm ++;
- if ( m == mon ) {
- n ++;
- if ( n <= num ) {
- System.out.print( jahr );
- switch ( mon ) {
- case 1:
- System.out.println( ", Januar" );
- break;
- case 2:
- System.out.println( ", Februar" );
- break;
- case 3:
- System.out.println( ", Maerz" );
- break;
- case 4:
- System.out.println( ", April" );
- break;
- case 5:
- System.out.println( ", Mai" );
- break;
- case 6:
- System.out.println( ", Juni" );
- break;
- case 7:
- System.out.println( ", Juli" );
- break;
- case 8:
- System.out.println( ", August" );
- break;
- case 9:
- System.out.println( ", September" );
- break;
- case 10:
- System.out.println( ", Oktober" );
- break;
- case 11:
- System.out.println( ", November" );
- break;
- case 12:
- System.out.println( ", Dezember" );
- break;
- }
- }
- }
- m = mon;
- } // end for
- } // End of main
- } // End of class
- }