Stephan Bazalka EProg Runde 3, BspNr. 3126 Matrikelnummer: 0225725 eMail: bazalka@gmx.net WICHTIGE ANMERKUNG ------------------ Lt. Spezifikation der Teillösung, die ich bekommen habe (Wochentag.java), wird jedes Datum als 19JJ interpretiert! Daher liefert die Eingabe des heutigen Datums einen "falschen" Wochentag! Das ist aber Absicht im Sinne der Spezifikation der Teillösung. (Ich fürchte nur, sie wird nicht mitgeliefert, deswegen schreib ichs überall hin! PROGRAMMBESCHREIBUNG -------------------- Das Programm liest Daten der Form TTMMJJHHMM bzw. Tag*Monat*Jahr*Stunden*Minuten ein. Daraus wird mit Wochentag.java (ein bei der Spezifkation mitgeliefertes Bsp.) der Wochentag berechnet. Ausgegeben werden Zahlenkolonnen für eine LED-Anzeige. ZUM TESTEN ---------- Ich würde empfehlen, beim Überprüfen des Programms an jede "Zeile" des Arrays mit den Zahlenkolonnen in Klammern einfach den Wert anzuhängen, den die Zahlenkolonne darstellen soll. Es ist ein bisschen mühsam, nur anhand von Zahlen die richtige Darstellung zu überprüfen. In Wochentag.java gibts auch so einen Array für die Wochentage, den könnte man zur Vereinfachung des Tests auch ändern. Aus genau diesem Grund sind diese Arrays Strings und nicht Integers! FUNKTIONSWEISE -------------- einlesen() Daten werden eingelesen untersuchen () Um welche Eingabe handelt es sich? wenn Trennzeichen (TZ) vorhanden sind: mitTrennzeichenBerechnen() kitzelt die Daten aus dem Eingabestring zwischen den TZ heraus wenn keine TZ vorhanden sind: ohneTrennzeichenBerechnen() splittet Daten nach fixem Muster auf ausgeben() Gibt das Ergebnis aus. *** einlesen(): Liest einen String ein. untersuchen(): Zeichen für Zeichen wird überprüft, ob es sich um eine zahl, einen Buchstaben (sind nicht erlaubt) oder ein anderes Zeichen (also ein Trennzeichen) handelt. Wenn alle Zeichen Zahlen sind und die Eingabe exakt 10 Zeichen lang ist, wird von der main-Methode ohneTZberechnen aufgerufen. Wenn vier idente TZ vorkommen, kommt mitTZberechnen zum Zug. In jedem anderen Fall ist die Eingabe fehlerhaft. ohneTrennzeichenBerechnen(): In den Array daten[] werden Tag, Monat, Jahr, Stunden, Minuten gespeichert. Mittels substring wird die Eingabe in "Zweier-Stückerl" zerlegt. mitTrennzeichenBerechnen(): Funktioniert ähnlich, nur werden die Positionen der Zerstückelung durch die Trennzeichen bestimmt. Denn in diesem Fall darf zB der Tag auch nur einstellig eingegeben werden. Vorher wird noch überprüft, zwischen den TZ nur max. zwei Zeichen stehen. ausgeben(String): Diese Methode wird bei einem Fehler aufgerufen. Damit das Programm relativ leicht in andere eingebunden werden kann, habe ich auf im Sourcecode verteilte println, Sytem.exit(), etc. verzichtet und sie stattdessen dort zusammengefasst. ausgeben(int[]): Es wird Array felder[] initialisiert. Der Wert von felder[0] entspricht der Zahlenkolonne, die für "0" ausgegeben werden soll. Die Lösung auf eprog.sourceforge.net hat zB diese Kolonnen sehr oft im Quelltext stehen. Anschließend wird das Datum an Wochentag.java übergeben. Diese Lösung stammt nicht von mir, sie war bei der Spezifikation dabei und ich habe sie nur adaptiert. Im Anschluss werden die Zahlenkolonnen ausgegeben. Die genaue Funktions- weise der Division ist im Quelltext erklärt. *** Ich hoffe, die Funktionsweise ist verständlich. Bei Fragen, Anregungen, Beschwerden: bazalka@gmx.net