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 2xFullMoon 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.
Dies sollte das Ergebnis:
Aufruf & Ausgabe:
$ java 2xFullMoon 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.
Java:
public class 2xFullMoon {
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 = 1;
int jahr = 2013;
int d = 1; //day
int dm = 1; //Tage Monate
int vm = 0; //vollmond
int mon = 1; //Monate
int m = 1; //
int dy = 1; // tag-Jahr
int n = 0;
num = Integer.parseInt( args[ 0 ] );
for ( d = 1 , m = 1, 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 % 31 == 1) ) {
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.
case 12: //December 31.
mon++;
break;
}
}
if ( (dm > 1) && (dm % 30 == 1) ) {
switch ( mon ) {
case 4: //April 30.
case 6: //June 30.
case 9: //September 30.
case 11: //November 30.
mon ++;
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;
}
} else {
return;
}
}
}
m = mon;
} // end for
} // End of main
} // End of class