public class TageSeit2
{
public static void main(String[] args)
{
int anzahl = args.length; //um zu prüfen wieviele Argumente übergeben wurden Tage Monat Jahr
int tage = Integer.parseInt( args[0] ); // Umwandlung der kommandozeilenstrings in die entsprechenden int-Werte
int monat = Integer.parseInt( args[1] );
int jahr = Integer.parseInt( args[2] );
if((anzahl!=3)||(tage<1)||(tage>31)||(monat<1)||(monat>12)) //auschliessen dass mehr als drei Argumente übergeben werden,dass tage und monate ungültige werte anehmen
System.out.printf("Ungültige Eingabe! Erforderliches Eingabeformat:TageSeit [Tage][Monat][Jahr] %n Ein Monat hat höchstens 31 Tage %nEin Jahr hat höchstens 12 Monaten%n ");
else // wenn die eingaben korrekt sind
{{
int[] erlaubteTageImMonat={31,28,31,30,31,30,31,31,30,31,30,31};//Initialisierung mit der Anzahl der Tagen im monat. Schließt die Eingabe von
// nicht korrekten Zahl der Tage im monat aus
if ((jahr%4==0))//&&(jahr%400==0)&&(jahr%100!=0));
//ausnahme für ein Schaltjahr,Februar hat 29 Tage
erlaubteTageImMonat[1]=29;
if(erlaubteTageImMonat[monat-1]>=tage) //ausschließen dass die eingegebene Tage der erlaubten Anzahl überschreitet
{
int[] tageLaufendesJahr= {0,31,59,90,120,151,181,212,243,273,304,334,365}; // Initialisierung mit den tagen bis dato
int gesamteTage=jahr*365; //berechnet die Tage der ganzen Jahre die vergangen sind
int ganzeTageMonat= tageLaufendesJahr[monat-1] + tage; //Gehe einen Monat zurück und berechne die Tage bis dahin, addiere anschliened die Tage des laufenden Monats
int vorErgebnis=ganzeTageMonat+gesamteTage; //addiere auf diesen Wert die Gesamtzahlt der Jahre * 365 dann hast du die tage seit dem 1.1.0 ohne Korrektur
int ersteKorrektur= jahr / 4 ; // wieviele Schaltjahre gibt es
int zweiteKorrektur=jahr / 100; // wenn das Jahr durch 100 teilbar handelt es sich nicht um ein Schaltjahr
int dritteKorrektur=jahr/400; //wenn das Jahr durch 400 teilbar ist handelt es sich um ein Schaltjahr
int gesamtErgebnis = vorErgebnis +ersteKorrektur-zweiteKorrektur-1+dritteKorrektur ; // -1 weil nicht vom 00.01.0000 sondern vom 01.01.0000 gerechnet wird;
System.out.println("Es sind " + gesamtErgebnis + " Tag(e) seit dem 01.01.0000 vergangen");
}
else
System.out.printf("Falsche Eingabe! Der %d. Monat (In dem Jahr %d) hat höchstens "+erlaubteTageImMonat[monat-1]+" "+"Tage%n", monat, jahr );
}
}
}
}