Einfacher Kalender

T

Tyrael1985

Gast
Ich möchte einen einfachen kalender erstellen der für das jahr 2010 alle tage und die dazugehörigen wochen,monate ausgibt.

wie gesagt es soll sich um einen einfachen kalender handeln,dies soll also über die ausgabe soll also über die konsole geschehen,

es handelt sich desweiteren um ein programm für einen "anfänger" also sollte die ermittlung der tage bzw monate über schleifen passieren.

ein beispiel wie es aussehen könnte wäre:

Januar 2010
1| | | | |1|2|3|
2|4|5|6|7|8|9|10|
3|11|12|13....

Die erste zahl in jeder zeile soll dann für die entsprechende kalenderwoche stehen.

Das Programm sollte dann noch eine 2.Funktion besitzen welche den Benutzer auswählen lässt welchen Monat er ausgeben möchte.

Wenn sich jemand mit einer solchen Problematik auskennt und mir bei diesem Problem weiterhelfen könnte wär ich sehr dankbar!

MfG
 
T

Tyrael1985

Gast
Danke für die fixxe antwort,aber ziel der aufgabe war es nicht die funktion die in java bereits implementiert ist zu verwenden,sondern wie bereits gesagt es handelt sich um ein Programm für "anfänger".

Es sollte also der festigung der fähigkeiten dienen und eben diesen kalender mithilfe von schleifen und anderweitigen grundlagen funktionen erstellen.

MfG Tyrael
 
T

Tyrael1985

Gast
Ich weiß das diese variante nicht die einfachste und schnellste methode ist und es über die bereits vorhandene funktion des GregorianCalendar
schneller und einfacher zu erstellen ginge,

aber dann wär der übungseffekt ja nichtmehr gegeben :=)

MfG Tyrael
 

faetzminator

Gesperrter Benutzer
Natürlich brauchst du auch so diese Schleifen ebenfalls. Aber willst du wirklich von Hand alle Schaltjahre, "Schaltjahrsausnahmen", Wochennummerberechnungen etc. von Hand implementieren? Keine Angst, du wirst nur schon für die Ausgabe eines Solchen Kalenders genug zu grübeln haben ;)
 
T

Tyrael1985

Gast
Nein nein es soll sich ja nicht um beliebiges Jahr handeln, sondern der Kalender soll schon aktualität besitzen, sprich also für das Jahr2010 gelten.

Und wir gehen eben davon aus das nur der wissensstand von einfachen IF/while/do-bedingungen/schleifen vorrausgesetzt ist.

Und die dazugehörigen mathematischen kenntnisse, zb das nach allen 7tagen ein zeilenumbruch geschehen muss, oder
wenn der monat sein maximum an tagen erreicht hat das programm einen neuen monat beginnen soll.

wir gehen also davon aus das keine kenntnisse über die monate vorhanden sind bis auf die anzahl ihrer tage und den anfangstag des jahres 2010,nämlich einem samstag.

restlichen informationen sollen berechnet werden und nicht nur iwo ausgelesen werden,genau das ist ja das problem vor dem ich sitze :=)

MfG Tyrael
 

Wladimir

Mitglied
Also einen einfachen Kalender gibt es nicht. Es gibt nur "den" Kalender :)

Um den Gregorianischen Kalender zu Berechnung musst folgendes Wissen:
1) Anzahl der Tage jedes Monats (musst du für jedes Monat speichern)
2) Schaltjahre (alle 4, alle 100 nicht, alle 400 doch (zb: Jahr 2000))
3) Wochentage Wochentagsberechnung ? Wikipedia

Das müßte eigentlich schon genügen
 

faetzminator

Gesperrter Benutzer
1) Anzahl der Tage jedes Monats (musst du für jedes Monat speichern)
2) Schaltjahre (alle 4, alle 100 nicht, alle 400 doch (zb: Jahr 2000))
3) Wochentage Wochentagsberechnung ? Wikipedia

Und eben genau diese Berechnungen nimmt dir der GregorianCalendar ab. Aber natürlich kannst du dir die Berechnungen auch von Hand programmieren, kommt schlussendlich auf das gleiche raus.
Am Einfachsten machst du es in zwei Schritten: Du erstellt ein Datenkonstrukt, aus welchem du alle benötigten Informationen auslesen kannst. Mit diesem gibst du die Daten auf der Konsole aus. Zuerst musst du diese natürlich abfüllen. Um die Funktionalität der Ausgabe zu testen, kannst du anfänglich den GregorianCalendar verwenden. Danach kannst du eigene Berechnungen schreiben, und diese mit den Ausgaben auf Grund des Outputs von GregorianCalendar vergleichen. Klingt das nach einer Idee ;) ?
 
T

Tyrael1985

Gast
ja gut das mit dem wissen der tage der monate hab ich ja vorrasugesetzt und schaltjahrproblematik ist uninteressant da dieser kalender lediglich für das jahr 2010 gelten soll.

hat denn jmd vllt ein beispielprogramm zur hand in der nicht die funktion des Class GregorianCalendar verwendet wird,sondern die mit hilfe von schlöeifen und bedingungen die tage der einzelne monate berechnet und dies für das ganze jahr 2010 und dazu noch die jeweiligen kalenderwochen an den anfang jeder zeile stellt?!

denn wie gesagt die verwendung der bereits vorhanden funktion des Class GregorianCalendar würde zu weit führen :=)

MfG Tyrael
 

faetzminator

Gesperrter Benutzer
Du willst nicht den GregorianCalendar verwenden, aber suchst nun nach einem lauffähigen Code, welcher die Berechnungen bereits erledigt ;) ? Ist das durch Zufall eine Schul- oder Uniaufgabe?
 
T

Tyrael1985

Gast
ja diese aufgabe soll nach meinen informationen einmal in der Uni drannkommen,

noch besuche ich das Gymnasium und bald sind ja Prüfungen danach soll es zur uni gehen und ich würd gern schon darauf vorbereitet sein und hab mir deswegen schon ein paar aufgaben besorgt aber bei dieser aufgabe verzweifel ich drann :=(!

da dacht ich mir wo könnt ich besser hilfe bekommen als in diesem forum :=)

und die kompetenz die hier an den tag gelegt wird ist auch bisher echt super :=)!

also ich wär euch sehr verbunden wenn ihr vllt mir dabei helfen könntet ohne den gregorianclaender zu verwenden!

ich weiß zwar auch das es so einfacher wäre aber wenn es in der uni nachher anders verlangt wird bringt es mir ja nichts wenn ich es darüber mache und dann nicht bestehe weil es in der aufgabe anders gefordert war :=)

MfG Tyrael
 

faetzminator

Gesperrter Benutzer
Wie bereits gesagt, kümmere dich doch erst mal um die Datensammlung per GregorianCalendar, die Datenhaltung dieser und schlussendlich die Ausgabe. Wenn du dann den GregorianCalendar gerne durch eigene Methoden ersetzt und das Programm ansonsten lauffähig ist, helfen wir gerne. Ich kann momentan keine konkrete Frage sehen, also kann ich auch keine konkrete Antwort geben. Und ich bin nicht nicht gewillt, dir zwei, drei Zeilen zu Coden, aber da wird dann der Lerneffekt wohl nicht so gross sein. Wenn du Probleme mit den Formeln / Berechnungen hast, kannst du z.B. Wladimir's Link zur Wiki folgen. Danach kannst du uns erzählen, was du bereits versucht hast bzw. wo du scheiterst und schlussendlich konkrete Fragen stellen.
 
T

Tyrael1985

Gast
Ja also gehen wir davon aus ich hab die information gegebn das das jahr 2010 mit einem freitag beginnt und weiß ansonsten nur die monatstage, dann würd ich mir diese anzahl der einzelnen tage speichern,und dann anfangen einen zähler zu basteln der jedesmal nach 7tagen einen zeilenumbruch macht sodass eine neue woche beginnt

und wenn die monatstage zuende sind soll er einen neuen monat beginnen,ist mir auch soweit klar,nur das problem was dann kommt ist wie bekomme ich zb die leeren tage gesetzt,sprich wenn der monat januar zb mit einem freitag aufhört und der februar mit einem samstag beginnt,dann müssten ja die tage von montag bis freitag leer sein in dem monat februar und da weiß ich nicht wie ich das umsetzen soll?!

desweiteren weiß ich auch noch nicht so ganz wie ich den 2.zähler dazu bringe jedesmal die aktuelle kalenderwoche an den anfang der zeile zu schreiben?
wenn ich dies umgesetzt bekommen würde was denk ich noch machbar wäre mit der kalenderwoche dann steh ich vor einem weiteren problem wo ich nicht weiß wie ich das lösen könnte und zwar wenn wir wieder das problem haben das er monat mit einem freitag zb aufhört ist dies ja noch eine unabgeschlossene kalenderwoche,sodass der neue monat ja diese kalenderwoche noch weiterführt?

zb hört der januar dann freitag in der kalenderwoche 4 auf und der februar besitzt ja dann noch als kalender woche die 4.kalenderwoche bis zum sonntag und geht dann erst in die 5.kalenderwoche,wie kann ich das umsetzen?!

denn wenn ich einen zähler einbauen würde der einfach nur jeden zeile eine zahl höher setzt dann würd es dazu führen das nicht im februar mit der 4.kalenderwoche die letzten 2tage bezeichnet werden sondern mit der 5.kalenderwoche und dies würde ja zu einem falschen ergebnis führen!

MfG Tyrael
 

faetzminator

Gesperrter Benutzer
Ich hab hier mal was schnell zusammengehackt. Code ist nicht gerade optimal, aber funktioniert.
Java:
public static void main(String[] args) {
    int year = 2010;
    int month = 1;

    int weekDayOfFirst = 4;
    int weekNumberOfFirst = 5;
    int numberOfDays = 31;

    int columns = (numberOfDays + weekDayOfFirst - 1) / 7 + 1;
    int position = weekDayOfFirst;
    int day;

    System.out.format("       %02d.%04d\n\n", month, year); // gibt den header aus

    for (int i = 0; i < weekDayOfFirst; i++) {
        System.out.print("   "); // gibt die führenden leerzeichen der ersten woche aus
    }
    for (int i = 0; i < columns; i++) {
        do {
            day = (++position) - weekDayOfFirst;
            System.out.format("%2d ", day); // gibt einen tag aus
        } while (position % 7 != 0 && day < numberOfDays);
        System.out.format(" %2d\n", weekNumberOfFirst++); // gibt noch die wochennummer aus
    }
}
[c]year[/c] = das auszugebende Jahr, [c]month[/c] = der auszugebende Monat
[c]weekDayOfFirst[/c] = Wochentag des 1. (hier Montag = 0 ... Sonntag = 6)
[c]weekNumberOfFirst[/c] = Wochennummer der Woche, in welcher sich der 1. befindet
[c]numberOfDays[/c] = Anzahl Tage des Monats

Die letzten drei Werte, welche ich hier beschreibe, musst du natürlich berechnen ;)
 

Wladimir

Mitglied
Du solltest ein Programm in 2 teile Teilen

1) Zuerst Daten generieren, z.B.: in ein Array, alle Tage und Wochtage des Monats
2) Daten auf der Console anzeigen

Du machst dir eine methode showMonth (int month, int[] daysOfMonth)

Dann gehst du mit dem Cursor von der erste Woche von Montag weg jede Position durch.
Und solange der Tag den du anzeigst nicht der erste Tag des Monats ist so zeigt du Ihn leer.

(In einem GUI Kalender würden an den leeren Stellen vielleicht die Tage des Vormonats in Grau stehn)
 
T

Tyrael1985

Gast
das ist ja umwerfend genau so sollte es aussehen :=)

aber eine kleine frage hab ich noch^^

könnte man die zeilen:

System.out.format("%2d ", day); // gibt einen tag aus

System.out.format(" %2d\n", weekNumberOfFirst++);

auch durch ein system.out.print ersetzen und wenn ja wie würd das denn aussehen,denn ich hab es getestet und dann passt die formatierung der tage nichtmehr überein weil ab dem 10.tag eine verschiebung stattfindet^^

und noch eine frage welchen zweck hat "%2d " ?
 

Schumi

Bekanntes Mitglied
:) %2d sorgt wohl genau dafür, dass alles ein 2-Stelliges Format hat und so Deine einstelligen Tage die gleiche Länge haben wie die zweistelligen.
 
T

Tyrael1985

Gast
Ah okay danke das würd auch erklären wieso meine system.out.print variante diesen formatierungsfehler aufwies,denn dort hab ich es einfach nur durch ein " " versucht die leerstellen zu simulieren!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Einfacher Taschenrechner mit Eclipse Java Basics - Anfänger-Themen 3
M Einfacher Taschenrechner Java Basics - Anfänger-Themen 2
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
EinNickname9 Denkfehler bei einfacher Schleife Java Basics - Anfänger-Themen 83
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
N Methoden Einfacher SekundenTimer/Stopuhr in Java Java Basics - Anfänger-Themen 2
X Streams und Ausgabe - lässt sich das einfacher schreiben oder schöner schreiben? Java Basics - Anfänger-Themen 5
H wie mehrere variablen in einfacher for-schleife? Java Basics - Anfänger-Themen 2
N Einfacher Rechner (für mich nicht so einfach) Java Basics - Anfänger-Themen 5
? Klassen einfacher Fehler in einem Java Programm. Java Basics - Anfänger-Themen 5
V Einfacher vergleich von Arrays geht schief Java Basics - Anfänger-Themen 2
K Seltsames Ergebnis in Netbeans bei einfacher Multiplikation Java Basics - Anfänger-Themen 5
O Ein einfacher Chatbot (simuliert chat) Java Basics - Anfänger-Themen 7
R Einfacher Regex Java Basics - Anfänger-Themen 3
L Einfacher Methodenaufruf vs. Objekt Java Basics - Anfänger-Themen 4
K Einfacher random namen weitergeben Java Basics - Anfänger-Themen 4
A Lässt sich dieser Ausdruck irgendwie einfacher schreiben? Java Basics - Anfänger-Themen 4
H Einfacher Editor, Einfache Handelsanweisungen Java Basics - Anfänger-Themen 2
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
P Geht dieser Code noch einfacher? Java Basics - Anfänger-Themen 16
R Einfacher Timer geht nicht Java Basics - Anfänger-Themen 7
M Einfacher Timer ;) Java Basics - Anfänger-Themen 15
M Einfacher Swing Wizard Java Basics - Anfänger-Themen 3
El_Lobo Methoden Zu viele Getter- und Settermethoden - geht das einfacher? Java Basics - Anfänger-Themen 3
P falsches ergebnis bei einfacher berechnung Java Basics - Anfänger-Themen 3
M Einfacher Fenster-Ablauf Java Basics - Anfänger-Themen 5
M Gittermuster mit Stringbuilder und einfacher Schleife erstellen Java Basics - Anfänger-Themen 19
T Collections Werte aus einer HashMap auslesen, oder gehts auch einfacher ? Java Basics - Anfänger-Themen 6
D Code einfacher,eleganter programmieren Java Basics - Anfänger-Themen 24
F Datentypen Welchen Wert hat ein einfacher Datentyp nach der Deklaration? Java Basics - Anfänger-Themen 6
C einfacher Link zu *.html Datei möglich? Java Basics - Anfänger-Themen 4
Hindi93 Einfacher Code funktioniert nicht... Java Basics - Anfänger-Themen 6
P Einfacher Rechner Java Basics - Anfänger-Themen 2
B Frage zu einfacher Rechnung Java Basics - Anfänger-Themen 3
B Hilfe bei einfacher Funktion - Possible loss of precision Java Basics - Anfänger-Themen 2
G Einfacher Anfang mit Hibernate Java Basics - Anfänger-Themen 4
M ein einfacher button.. ich verzweifel...... Java Basics - Anfänger-Themen 41
F Von int zu double bei einfacher Rechnung Java Basics - Anfänger-Themen 2
C Einfacher Installer Java Basics - Anfänger-Themen 2
Chucky Einfacher Taschenrechner Verbesserungsvorschläge Java Basics - Anfänger-Themen 13
G Problem mit einfacher For-Schleife und Double Wert Java Basics - Anfänger-Themen 4
D Probleme bei einfacher Rechnung Java Basics - Anfänger-Themen 3
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
F MS365 Kalender lesen Java Basics - Anfänger-Themen 5
sserio Gregorianischer Kalender und dessen Tage. Java Basics - Anfänger-Themen 14
T simpler Kalender Java Basics - Anfänger-Themen 10
G Kalender Jahreszahlen Java Basics - Anfänger-Themen 6
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
J Gerorianischer Kalender wechselt am Freitag die Woche Warum Java Basics - Anfänger-Themen 2
N Kalender - Tag addieren gibt 31. Juni zurück Java Basics - Anfänger-Themen 3
S Hinweis zu Fehler im Kalender-Code - Aufgabe 5.3 aus Grundkurs Programmieren in Java 7. Auflage Java Basics - Anfänger-Themen 4
I c++ sexagesimal kalender Java Basics - Anfänger-Themen 5
I ical - Datei auf Server ablegen und Kalender abbonieren Java Basics - Anfänger-Themen 0
C Kalender in Applet einfügen Java Basics - Anfänger-Themen 0
U Neu Julianischer Kalender Java Basics - Anfänger-Themen 2
T Kalender irrt sich Java Basics - Anfänger-Themen 8
M Kalender reloaded Java Basics - Anfänger-Themen 7
L Kalender Java Frame Java Basics - Anfänger-Themen 7
M Kalender mit Terminen Java Basics - Anfänger-Themen 24
F Problem mit selbstprogrammierten Kalender (als Übung) Java Basics - Anfänger-Themen 4
J Arrays (Kalender) Fehler im Programm Java Basics - Anfänger-Themen 2
P Date oder Kalender? Was soll man verwenden? Java Basics - Anfänger-Themen 2
K Erste Schritte Kalender selber erstellen? Java Basics - Anfänger-Themen 3
A JKomponente für Kalender Java Basics - Anfänger-Themen 5
R Kalender speichert keine Zeit Java Basics - Anfänger-Themen 2
L einfachen kalender Programmieren HA! Java Basics - Anfänger-Themen 76
M Kalender Java Basics - Anfänger-Themen 15
E Methoden zusammenfassen/Kalender erstellen Java Basics - Anfänger-Themen 13
G Kalender Bean in Netbean einbinden Java Basics - Anfänger-Themen 3
F Termine in einen kalender eintragen. Java Basics - Anfänger-Themen 11
G Kalender Von String zu boolean -- NullpointerException Java Basics - Anfänger-Themen 2
S Wie Termine/Notizen in Outlook Kalender einfügen ? Java Basics - Anfänger-Themen 3
D Gibt es einen vordefinierten Kalender in java? Java Basics - Anfänger-Themen 8
H Java Kalender systemabhängig programmieren? Java Basics - Anfänger-Themen 3
B Kalender -> Termine eintragen Java Basics - Anfänger-Themen 1
W Java Kalender Java Basics - Anfänger-Themen 6
B Kalender und Wochentagswechsel Java Basics - Anfänger-Themen 6
G The serializable class Kalender does not declare a static fi Java Basics - Anfänger-Themen 5
A Kalender mit Objekten belegen Java Basics - Anfänger-Themen 3
A kalender Java Basics - Anfänger-Themen 26
J Wie drucke ich eine Komponente wie Kalender auf dem Drucker Java Basics - Anfänger-Themen 3
G Kalender ? Java Basics - Anfänger-Themen 6
S kalender machen Java Basics - Anfänger-Themen 40
G kalender Java Basics - Anfänger-Themen 15
P Kalender Programmieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben