Datum + dazugehöriger Wochentag!!!

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Datum + dazugehöriger Wochentag!!!

    hey leute bin hier neu und bin ein Java Noob lol und nun das folgende Problem.
    Ich soll ein Programm schreiben, das ein Datum ab dem 1.Januar 1601 einliest und dazu den dazugehörigen Wochentag mit ausgibt.
    Man weiss dass der 1.Janaur 1601 ein Montag war.

    Die Schaltjahrberechnung is dabei auch sehr wichtig, so weiss is dass alle Jahreszahlen die durch 4 teilbar sind Schultjahre sind und alle die durch 100 teilbar sind, sind keine Schaltjahr, so auch die, die durch 400 teilbar sind, dies sind glaub ich dann auch Schaltjahre.

    Das Problem ist, ich kann nur Variablendeklarationen, Zuweisungen, If Anweisungen und die System.out.Methode benutzen.

    Kann mir jemand helfen!?
    Ich verusche schon den halben Tag das hinzubekommen und komme nicht voran!

    Ich weiss gar nicht wie ich damit anfangen soll!

    Bitte um Hilfe!!
    Danke schön schon mal im voraus!!!


    ps is diese Schaltjahrberechnung richtig?

    Quellcode

    1. boolean istSchaltJahr(int jahr) {
    2. return jahr%4==0 && (jahr%100 != 0 || jahr%400 == 0);
    3. }




    bitte um eine ausführliche Hilfe, ich habe echt wenig ahnung löl
  • Quellcode

    1. public class Wochentag {
    2. public static void main(String[] args) {
    3. int monat[] = new int [12];
    4. monat[1]=0;
    5. monat[2]=31;
    6. monat[3]=28;
    7. monat[4]=31;
    8. monat[5]=30;
    9. monat[6]=31;
    10. monat[7]=30;
    11. monat[8]=31;
    12. monat[9]=31;
    13. monat[10]=30;
    14. monat[11]=31;
    15. monat[12]=30;
    16. monat[13]=31;
    Alles anzeigen



    so ich bin jez soweit angekommen, und das wars auch schon mit meinem java können!!!
    wie schreibe ich die befehle für Schaltjahre?! habe mir den link den du mir geschickt hast angeschaut, aba verstehe dies net wirklich da.
    und noch dann ne frage
    Die schaltjahre kann man doch auch mit while schleife berechnen?!!falls ja wie?!!?
    wie mache ich das mit demjahren?!!
    zu erst int j für jahr?! dann j = 2006???
    dann ziehe ich zum beispiel die 1601 ab und habe dann 405 jahre??!
    wie schreibe ich das??! int j; j = 2006 ??

    und wie mache ich das mit den tagen?!?!!da brauche ich doch ne while schleife??!
    wert 0 = montag
    wert 1 = dienstag und so weiter?!

    praktisch is mir das kla aba die scheiss algorithemn peil ich nicht

    ööö büüdeee um heellppppp
    :oops:
  • Benutz mal die Suchfunktion. Zu Java Kalenderanwendungen gibts schon mehrere Themen.

    Hier zum Beispiel eine ordentliche Definition der Tage im Monat: (inkl. Schaltjahrfunktion)
    http://www.easy-coding.de/wochentag-eines-tages-im-jahr-herausfinden-t1898.html#7163


    Ansonsten kann ich nur sagen: Konzentrier dich aufs Modulo - Modulo ist wichtig.
    Und so könnte dein Wochentag Array aussehen

    Quellcode

    1. String wochentage[] = {"Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"};
  • Quellcode

    1. import java.io.*;
    2. class Program { public static void main(String[] args)
    3. {
    4. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    5. String zeile = null;
    6. System.out.print("Tag");
    7. zeile = reader.readLine();
    8. int tag=Integer.parseInt(zeile);
    9. System.out.print("Monat");
    10. zeile = reader.readLine();
    11. int monat = Integer.parseInt(zeile);
    12. System.out.print("Jahr");
    13. zeile = reader.readLine();
    14. int jahr = Integer.parseInt(zeile);
    15. System.out.println("Ihre Eingabe: " + tag + "." + monat + "." + jahr);
    16. }
    17. }
    Alles anzeigen



    kumpel hat mir jez das hier geschickt!!
    nur leider funktioniert das auch nicht da diese zeile immer nen fehler enthält
    reader.readLine();

    HILFEEE
  • Hab dir das Verfahren mal runtergetippt

    Definition des Referenztages
    Eingabe des gesuchten Tages von der Tastatur

    wenn Referenzjahr nicht dem gesuchten Jahr ist
    ---> Zähle zu der Anzahl von Tagen 365 oder 366 Tage hinzu (schaltjahr ja/nein)
    ---> inkrementiere das Referenzjahr

    wenn Referenzmonat nicht dem gesuchten Monat ist
    ---> Zähle zu der Anzahl von Tagen die Anzahl der Tage des Monats hinzu (vorsicht bei Februar)
    ---> inkrementiere den Referenzmonat

    Addiere zu der Anzahl von Tagen die Differenz des Referenztages zum aktuellen Tag

    Als Ergebnis erhältst du die Anzahl der Tage die zwischen dem Referenztag und dem aktuellen Tag vergangen ist
    und jetzt das Modulo ;)
  • hier meine Lösung...
    mit import von IOTOols

    import Prog1Tools.IOTools;
    public class Woche
    {
    public static void main(String[] args)
    {


    System.out.println("Geben Sie ein gültiges Datum ab 1. Januar 1601 ein.");
    int tag = IOTools.readInteger("Bitte geben Sie den Tag ein: ");
    int monat = IOTools.readInteger("Bitte geben Sie den Monat ein: ");
    int jahr = IOTools.readInteger("Bitte geben Sie das Jahr ein: ");

    int jan = 31,
    mar = 31,
    apr = 30,
    mai = 31,
    jun = 30,
    jul = 31,
    aug = 31,
    sep = 30,
    okt = 31,
    nov = 30,
    dez = 31;

    int sjahr,feb;
    if ((jahr % 4 == 0) && (jahr / 100 != 0) || (jahr / 400 == 0))
    {
    feb = 29;
    }
    else
    {
    feb = 28;
    }

    sjahr = ((jahr - 1601) / 4) - ((jahr - 1601) / 100) + ((jahr - 1601) / 400);
    int anz_t = ((jahr-1601)*365) + sjahr;

    //Überprüfen ob der Monat existiert
    if(monat <= 0 || monat > 12){
    System.out.println("Dieses Datum existiert nicht");
    }

    //Überprüfen ob der Tag existiert
    if(tag <= 0){
    System.out.println("Dieses Datum existiert nicht");
    }

    int jtemp = 0;
    if (monat == 1)
    jtemp = tag;
    if (monat == 2)
    jtemp = jan + tag;
    if (monat == 3)
    jtemp = jan + feb + tag;
    if (monat == 4)
    jtemp = jan + feb + mar + tag;
    if (monat == 5)
    jtemp = jan + feb + mar + apr + tag;
    if (monat == 6)
    jtemp = jan + feb + mar + apr + mai + tag;
    if (monat == 7)
    jtemp = jan + feb + mar + apr + mai + jun + tag;
    if (monat == 8)
    jtemp = jan + feb + mar + apr + mai + jun + jul + tag;
    if (monat == 9)
    jtemp = jan + feb + mar + apr + mai + jun + jul + aug + tag;
    if (monat == 10)
    jtemp = jan + feb + mar + apr + mai + jun + jul + aug + sep + tag;
    if (monat == 11)
    jtemp = jan + feb + mar + apr + mai + jun + jul + aug + sep + okt + tag;
    if (monat == 12)
    jtemp = jan + feb + mar + apr + mai + jun + jul + aug + sep + okt + nov + tag;


    int t_ges = anz_t + jtemp;

    String wtag = "";

    if (t_ges % 7 == 0)
    wtag = "Sonntag";
    if (t_ges % 7 == 1)
    wtag = "Montag";
    if (t_ges % 7 == 2)
    wtag = "Dienstag";
    if (t_ges % 7 == 3)
    wtag = "Mittwoch";
    if (t_ges % 7 == 4)
    wtag = "Donnerstag";
    if (t_ges % 7 == 5)
    wtag = "Freitag";
    if (t_ges % 7 == 6)
    wtag = "Samstag";

    System.out.println("Der " + tag + "." + monat + "." + jahr + " ist ein " + wtag + ".");

    }
    }


    gibt bestimmt bessere lösungen aba alles läuft lol


    danke trotzdem 4 help und tips.