Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 27
  1. #1
    Yacht-Master Avatar von Kermit
    Registriert seit
    14.01.2007
    Ort
    OWL
    Beiträge
    1.999

    Beitrag Java Programmierer hier?

    Moin,

    ich habe da so eine berühmt berüchtigte Java Programmieraufgabe für BWL Studenten zu lösen...

    Gibt es hier einen Java - Experten, der mal über meine Lösung schauen könnte?
    Gruß,

    Martin

  2. #2
    Daytona Avatar von Hr.Nitsche
    Registriert seit
    03.07.2005
    Ort
    Hamburg
    Beiträge
    3.020
    kannst sie mir mal schicken
    Jörg

  3. #3
    Yacht-Master Avatar von Kermit
    Registriert seit
    14.01.2007
    Ort
    OWL
    Beiträge
    1.999
    Themenstarter
    mach ich
    Gruß,

    Martin

  4. #4
    Daytona Avatar von Hr.Nitsche
    Registriert seit
    03.07.2005
    Ort
    Hamburg
    Beiträge
    3.020
    Aber mit Aufgabe
    Jörg

  5. #5
    Daytona Avatar von Hr.Nitsche
    Registriert seit
    03.07.2005
    Ort
    Hamburg
    Beiträge
    3.020
    Habs bekommen. Wenn ich mit meinem Zeug fertig bin schau ich mal drüber
    Jörg

  6. #6
    Yacht-Master Avatar von Kermit
    Registriert seit
    14.01.2007
    Ort
    OWL
    Beiträge
    1.999
    Themenstarter
    Der Teil 2 ist jetzt auch fertig- für Teil 3 brauche ich glaube ich noch ein wenig
    Gruß,

    Martin

  7. #7
    Hauptforensemmler Avatar von chris01
    Registriert seit
    18.02.2004
    Beiträge
    5.510
    da hr.nitsche schneller war, ist gut.
    im zweifelsfall, kann auch ich mal drüberschaun.

    wirtschaft und programmieren ... *LOOOL*
    welcher idiot hat den lehrplan entworfen
    mfg Christoph

  8. #8
    Daytona Avatar von Hr.Nitsche
    Registriert seit
    03.07.2005
    Ort
    Hamburg
    Beiträge
    3.020
    Schau nur mal drüber Christoph, bin auch nur Wirtschaftsstudent
    Jörg

  9. #9
    Yacht-Master Avatar von Kermit
    Registriert seit
    14.01.2007
    Ort
    OWL
    Beiträge
    1.999
    Themenstarter
    Original von chris01
    da hr.nitsche schneller war, ist gut.
    im zweifelsfall, kann auch ich mal drüberschaun.

    wirtschaft und programmieren ... *LOOOL* welcher idiot hat den lehrplan entworfen


    Ich werde den Spaß hier mal einstellen... zur allgemeinen Belustigung

    Aufgabe:

    Schreiben Sie ein JAVA-Programm mit Testplan, das Folgendes tut:
    Prüfen zweier eingelesener Kalenderdaten auf Gültigkeit. Die Eingabe erfolgt über ein DOSFenster in der Komandozeile. Über diese ist ebenfalls anzustoßen und als Ergebnis auszugeben:
    1. Anzahl der Tage ab 1. Januar des jeweiligen Datums
    2. Differenz der Kalenderdaten in Tagen
    3. Anzahl der Werktage ab einem eingegebenen Datum bis zum Tagesdatum
    Mögliche Daten: 1901 bis 2100, alle anderen gelten als ungültig.
    Der 1.1.1901 war ein Dienstag (falls Sie das brauchen).
    Bedingungen
    ● Es muss mindestens zwei Klassen mit entsprechenden Methoden geben:
    1. Alle Operationen zu einem Datum mit den nötigen variablen Daten
    und Konstanten.
    2. Die Operationen zu mehr als einem Datum und der main-Methode.
    ● Die Systemklasse GregorianCalender darf nur benutzt werden, um das Tagesdatum festzustellen. Alle anderen Berechnungen zu Kalenderdaten sind selbst zu entwerfen und zu testen.

    Quellcode by Martin Teil 1 & 2:

    import java.io.*;
    import java.text.*;
    import java.util.*;

    class Datum {

    public static int differenz;
    public static int tage[] = new int[2];
    public static int tagesdatum[] = new int[3];
    public static int datum[][] = new int[2][3];
    public static int month[][] = new int[2][12];

    void einlesenDatum() throws IOException {
    int i;
    int z=0;
    do {
    month[z][0]=31; month[z][1]=28; month[z][2]=31; month[z][3]=30; month[z][4]=31; month[z][5]=30;
    month[z][6]=31; month[z][7]=31; month[z][8]=30; month[z][9]=31; month[z][10]=30; month[z][11]=31;
    int l = z+1;
    BufferedReader dt =
    new BufferedReader ( new InputStreamReader (System.in) );
    do {
    System.out.println("\nBitte das Jahr des "+l+". Datums zwischen 1901 und 2100 eingeben:");
    datum[z][2] = Integer.parseInt (dt.readLine());
    } while (datum[z][2] <1901 || datum[z][2] >2100);
    if (datum[z][2]%400 == 0){
    month[z][1]=29;
    } else if (datum[z][2]%4 == 0 && datum[z][2]%100 != 0) {
    month[z][1]=29;}
    do {
    System.out.println("\nBitte den Monat des "+l+". Datums zwischen 1 und 12 eingeben:");
    datum[z][1] = Integer.parseInt (dt.readLine());
    datum[z][1]--;
    } while (datum[z][1] <0 || datum[z][1] >11);
    do {
    i = datum[z][1];
    System.out.println("\nBitte den Tag des "+l+".Datums eingeben:");
    System.out.println("(bei ungueltiger Eingabe bitte erneut versuchen)");
    datum[z][0] = Integer.parseInt (dt.readLine());
    } while (datum[z][0]<1|| datum[z][0]>month[z][i]);

    System.out.print("Das "+l+". Datum lautet: "+datum[z][0]+".");
    System.out.println(datum[z][1]+1+"."+datum[z][2]);
    z=z+1;
    } while (z<2);
    }

    void tagesdatum() throws IOException {
    GregorianCalendar kal = new GregorianCalendar();
    tagesdatum[0] = kal.get(GregorianCalendar.DATE);
    tagesdatum[1] = kal.get(GregorianCalendar.MONTH)+1;
    tagesdatum[2] = kal.get(GregorianCalendar.YEAR);
    }

    void tageberechnen() throws IOException {
    int z=0;
    for (int p=2;z<p; z++){
    for (int i=0; i<datum[z][1]; i++)
    { tage[z] += month[z][i]; }
    tage[z] += datum[z][0];
    int l=z+1;
    System.out.println("\nDie Zeitspanne "+l+". Datum vom 1.1."+datum[z][2]+" bis zum "+datum[z][0]+"."
    +(datum[z][1]+1)+"."+datum[z][2]+" betraegt: "+tage[z]+" Tage");
    }
    }
    }

    public class Aufgabe extends Datum {

    void differenzdaten() throws IOException {
    int i=0,z=0,t=0;
    if (datum[0][2]<datum[1][2]){
    i=datum[0][2];
    t=-tage[0]+tage[1];}
    else { i=datum[1][2];
    t=tage[0]-tage[1]; }
    for (int p=datum[0][2]+datum[1][2]-i; i<p; i++){
    if (i%400==0){
    z=366;
    } else if (i%4==0&&i%100!=0){
    z=366;
    } else {
    z=365;
    }
    differenz=differenz+z;
    }
    differenz=differenz+t;
    System.out.println("\nDie Differenz zuwischen den beiden eingegebenen Daten betraegt "+differenz+" Tage");
    }

    public static void main(String[] args) throws IOException {

    Datum a = new Datum();
    a.einlesenDatum();
    a.tagesdatum();
    a.tageberechnen();

    Aufgabe b = new Aufgabe();
    b.differenzdaten();
    }}
    Gruß,

    Martin

  10. #10
    preppyking
    Gast
    Original von Kermit
    Original von chris01
    da hr.nitsche schneller war, ist gut.
    im zweifelsfall, kann auch ich mal drüberschaun.

    wirtschaft und programmieren ... *LOOOL* welcher idiot hat den lehrplan entworfen


    Ich werde den Spaß hier mal einstellen... zur allgemeinen Belustigung

    Aufgabe:

    Schreiben Sie ein JAVA-Programm mit Testplan, das Folgendes tut:
    Prüfen zweier eingelesener Kalenderdaten auf Gültigkeit. Die Eingabe erfolgt über ein DOSFenster in der Komandozeile. Über diese ist ebenfalls anzustoßen und als Ergebnis auszugeben:
    1. Anzahl der Tage ab 1. Januar des jeweiligen Datums
    2. Differenz der Kalenderdaten in Tagen
    3. Anzahl der Werktage ab einem eingegebenen Datum bis zum Tagesdatum
    Mögliche Daten: 1901 bis 2100, alle anderen gelten als ungültig.
    Der 1.1.1901 war ein Dienstag (falls Sie das brauchen).
    Bedingungen
    ● Es muss mindestens zwei Klassen mit entsprechenden Methoden geben:
    1. Alle Operationen zu einem Datum mit den nötigen variablen Daten
    und Konstanten.
    2. Die Operationen zu mehr als einem Datum und der main-Methode.
    ● Die Systemklasse GregorianCalender darf nur benutzt werden, um das Tagesdatum festzustellen. Alle anderen Berechnungen zu Kalenderdaten sind selbst zu entwerfen und zu testen.

    Quellcode by Martin Teil 1 & 2:

    import java.io.*;
    import java.text.*;
    import java.util.*;

    class Datum {

    public static int differenz;
    public static int tage[] = new int[2];
    public static int tagesdatum[] = new int[3];
    public static int datum[][] = new int[2][3];
    public static int month[][] = new int[2][12];

    void einlesenDatum() throws IOException {
    int i;
    int z=0;
    do {
    month[z][0]=31; month[z][1]=28; month[z][2]=31; month[z][3]=30; month[z][4]=31; month[z][5]=30;
    month[z][6]=31; month[z][7]=31; month[z][8]=30; month[z][9]=31; month[z][10]=30; month[z][11]=31;
    int l = z+1;
    BufferedReader dt =
    new BufferedReader ( new InputStreamReader (System.in) );
    do {
    System.out.println("\nBitte das Jahr des "+l+". Datums zwischen 1901 und 2100 eingeben:";
    datum[z][2] = Integer.parseInt (dt.readLine());
    } while (datum[z][2] <1901 || datum[z][2] >2100);
    if (datum[z][2]%400 == 0){
    month[z][1]=29;
    } else if (datum[z][2]%4 == 0 && datum[z][2]%100 != 0) {
    month[z][1]=29;}
    do {
    System.out.println("\nBitte den Monat des "+l+". Datums zwischen 1 und 12 eingeben:";
    datum[z][1] = Integer.parseInt (dt.readLine());
    datum[z][1]--;
    } while (datum[z][1] <0 || datum[z][1] >11);
    do {
    i = datum[z][1];
    System.out.println("\nBitte den Tag des "+l+".Datums eingeben:";
    System.out.println("bei ungueltiger Eingabe bitte erneut versuchen)";
    datum[z][0] = Integer.parseInt (dt.readLine());
    } while (datum[z][0]<1|| datum[z][0]>month[z]);

    System.out.print("Das "+l+". Datum lautet: "+datum[z][0]+".";
    System.out.println(datum[z][1]+1+"."+datum[z][2]);
    z=z+1;
    } while (z<2);
    }

    void tagesdatum() throws IOException {
    GregorianCalendar kal = new GregorianCalendar();
    tagesdatum[0] = kal.get(GregorianCalendar.DATE);
    tagesdatum[1] = kal.get(GregorianCalendar.MONTH)+1;
    tagesdatum[2] = kal.get(GregorianCalendar.YEAR);
    }

    void tageberechnen() throws IOException {
    int z=0;
    for (int p=2;z<p; z++){
    for (int i=0; i<datum[z][1]; i++)
    { tage[z] += month[z]; }
    tage[z] += datum[z][0];
    int l=z+1;
    System.out.println("\nDie Zeitspanne "+l+". Datum vom 1.1."+datum[z][2]+" bis zum "+datum[z][0]+"."
    +(datum[z][1]+1)+"."+datum[z][2]+" betraegt: "+tage[z]+" Tage";
    }
    }
    }

    public class Aufgabe extends Datum {

    void differenzdaten() throws IOException {
    int i=0,z=0,t=0;
    if (datum[0][2]<datum[1][2]){
    i=datum[0][2];
    t=-tage[0]+tage[1];}
    else { i=datum[1][2];
    t=tage[0]-tage[1]; }
    for (int p=datum[0][2]+datum[1][2]-i; i<p; i++){
    if (i%400==0){
    z=366;
    } else if (i%4==0&&i%100!=0){
    z=366;
    } else {
    z=365;
    }
    differenz=differenz+z;
    }
    differenz=differenz+t;
    System.out.println("\nDie Differenz zuwischen den beiden eingegebenen Daten betraegt "+differenz+" Tage";
    }

    public static void main(String[] args) throws IOException {

    Datum a = new Datum();
    a.einlesenDatum();
    a.tagesdatum();
    a.tageberechnen();

    Aufgabe b = new Aufgabe();
    b.differenzdaten();
    }}

  11. #11
    Yacht-Master Avatar von Kermit
    Registriert seit
    14.01.2007
    Ort
    OWL
    Beiträge
    1.999
    Themenstarter
    Wieso guckst Du ?

    Unverständnis oder Erstaunen über schlechten Programmierstil?
    Gruß,

    Martin

  12. #12
    Hauptforensemmler Avatar von chris01
    Registriert seit
    18.02.2004
    Beiträge
    5.510


    ich finds lustig, wie das forum die syntax mit smilies aufbessert.
    mfg Christoph

  13. #13
    preppyking
    Gast
    Unverständnis

  14. #14
    Hauptforensemmler Avatar von chris01
    Registriert seit
    18.02.2004
    Beiträge
    5.510
    die ganze zeit-sache ist in der it wirklich ein übel. zeitumstellung macht jedes jahr probleme. hier ein kleiner auszug:


    * Eine Minute hat nicht immer 60 Sekunden (z.B. wenn vom Internationalen Erd-Rotations-Service (IERS) angeordnete Schaltsekunden eingefügt werden, was 2006-01-01 zum 23. Mal seit 1972 passierte).
    * Ein Tag hat nicht immer 24 Stunden (z.B. bei Sommer-/Winterzeitumstellung).
    * Eine Woche hat nicht immer 7 Tage (z.B. die erste Woche im Jahr).
    * Ein Jahr hat nicht immer 365 Tage (z.B. in Schaltjahren und bei Kalenderanpassungen).
    * Die Berechnung, ob ein Jahr ein Schaltjahr ist, ist nicht immer fehlerfrei (alle 4 Jahre, außer alle 100, wenn nicht durch 400 teilbar).
    * Es wurden mehrmals mehrere Tage ausgelassen, um den Kalender an das tatsächliche Sonnenjahr anzupassen (z.B. folgte auf Donnerstag 4. Oktober 1582 als nächster Tag Freitag 15. Oktober 1582).
    * Es gibt nicht das Jahr 0. Nach 1 B.C. (vor Christi) folgte 1 A.D. (nach Christi).
    * Die Zahl der Tage, ab der diese Tage als erste Woche im Jahr gelten, ist unterschiedlich definiert.
    * Der Wochenanfang ist manchmal mit Sonntag und manchmal mit Montag definiert.
    * Es gibt unterschiedliche Behandlungen von zweistelligen Jahreszahlen. Sie können als Jahreszahlen im ersten Jahrhundert A.D. gemeint sein oder es muss 1900 oder bei kleinen Werten vielleicht auch 2000 dazu addiert werden.
    * Die Angabe 01/02/03 kann in Deutschland 2003-02-01, in USA 2003-01-02 und in asiatischen Staaten 2001-02-03 bedeuten.
    * Die Uhrzeit kann bis 12 AM/PM oder bis 24 h zählen.
    * Zeitzonen müssen berücksichtigt werden. Die Bestimmung der Zeitzone eines Ortes ist nicht einfach.
    * Es gibt unterschiedliche und sich ändernde lokale Bestimmungen und Anfangs-/Endzeiten zur Sommer-/Winterzeit.
    In Europa beginnt die Sommerzeit seit 1980 am letzten Sonntag im März, endete bis 1995 am letzten Sonntag im September und endet seit 1996 am letzten Sonntag im Oktober.
    * Der Unterschied von Sommer- zur Winterzeit beträgt nicht immer eine Stunde. Zum Beispiel galt 1947 in Deutschland die Hochsommerzeit (MEHSZ) mit zwei Stunden Unterschied.
    * Es gibt verschiedene Kalendersysteme (z.B. 1-Jan-2000 (Gregorian) = 23-Tevet-576 (Hebrew) = 24-Ramadan-1420 (Islamic)).
    * Der bei Astronomen beliebte 'Julian Day calendar' (Zyklen von 7980 astronomischen Jahren beginnend ab 1. Jan. 4713 B.C.) ist nicht das Gleiche wie der von Julius Caesar eingeführte und bei einigen Orthodoxen heute noch benutzte 'Julian Calendar' (in Europa von 1. Jan. 45 B.C. bis 4. Okt. 1582 A.D.).
    * Die Länder, die sich auf den (von Papst Gregory XIII eingeführten) gregorianischen Kalender umgestellt haben, haben dies zu sehr verschiedenen Zeiten vollzogen, wodurch historische Berechungen erschwert werden (viele europäische Länder 1582, aber z.B. China erst 1949 und andere Länder gar nicht).
    * Es gibt Beschränkungen im Wertebereich der Programmiersprachen-Funktionen.
    Z.B. in Java akzeptiert Date 290 Millionen Jahre B.C. (vor Christi) bis 290 Millionen Jahre A.D. (nach Christi), aber GregorianCalendar akzeptierte vor JDK 1.2 kein Datum früher als 4713 B.C.
    Noch gravierender: 2038-01-19 sind 2^31 Sekunden seit 1970-01-01 vergangen und damit endet der Wertebereich des unter Unix und Windows bei 32-Bit-Programmierung in C üblichen time_t.
    * zeitstempel können links- oder rechtsbündig sein, wenn man zeitreihen hat
    mfg Christoph

  15. #15
    Yacht-Master Avatar von Kermit
    Registriert seit
    14.01.2007
    Ort
    OWL
    Beiträge
    1.999
    Themenstarter
    ok- Danke Chris aber irgendwie bringt mich das nicht weiter
    Gruß,

    Martin

  16. #16
    Sea-Dweller Avatar von HorstDJ
    Registriert seit
    25.11.2006
    Ort
    München
    Beiträge
    1.010
    Druck einfach sicherheitshalber Chris' Text aus oder noch besser lerne ihn auswendig...und wenn dein Prof irgendetwas gegen dein Programm sagt, erklärt du ihm damit, dass die Fragestellung schon viel zu ungenau ist und du deshalb das Programm gar nicht besser machen konntest...


    Liebe Grüße

    Stefan
    „Was du nicht willst, dass man dir tu, das füg’ auch keinem andern zu“


  17. #17
    Hauptforensemmler Avatar von chris01
    Registriert seit
    18.02.2004
    Beiträge
    5.510
    mein erstes problem ist schon die angabe:

    - du sollt 2 datums einlesen, liest aber nur 1, ok mal
    - was ist "jeweiliges Datum"? das ersteingelesene, das aktuelle datum, ...??
    - wie ist der werktag definiert? mo-fr, auch feitertage, kulturkreis ...?



    edit: stefan hat ganz klar recht, die angabe ist nicht zu gebrauchen.

    edit: in deinem beispiel nimmt das einlesen und prüfen ziemlich viel platz sein und verschleiert daher oft den blick aufs wesentliche (die datumsarithmetik). ich würd daher das einlesen/prüfen durch einen regulären erledigen. das würde dir aber der assistent wohl kaum abkaufen.

    weiters spreche ich aus eigenerer erfahrung, was jedoch nicht allgemeingültig ist und in einführungslvas wohl auch nicht so gilt:
    wichtig ist, dass du weisst was du tust bzw. getan werden muss. ob man das jetzt perfekt in code umgesetzt hat ist (zumindest in höheren semestern) nicht so wichtig.
    mfg Christoph

  18. #18
    Sea-Dweller Avatar von HorstDJ
    Registriert seit
    25.11.2006
    Ort
    München
    Beiträge
    1.010
    Ich muss mich jetzt auch nochmal vor Chris
    Genial, wie du alle Probleme beim Datum zusammengestellt hast.
    Vielen Dank.

    Ganz liebe Grüße

    Stefan
    „Was du nicht willst, dass man dir tu, das füg’ auch keinem andern zu“


  19. #19
    Hauptforensemmler Avatar von chris01
    Registriert seit
    18.02.2004
    Beiträge
    5.510
    glaubst doch nicht wirklich stefan, dass ich die ganze zeittheorie da selbst geschrieben hab. ich kann kaum den MO vom FR unterscheiden
    mfg Christoph

  20. #20
    Sea-Dweller Avatar von HorstDJ
    Registriert seit
    25.11.2006
    Ort
    München
    Beiträge
    1.010
    Dachte ich schon
    Mich so auf den Arm nehmen
    Und ich bedank mich auch noch
    Aber wenigstens hast du es gut zusammengetragen...

    Die Fragestellung ist wirklich ein Problem...wie Chris schon sagt...was sind Werktage?...mit Samstag ohne Samstag... Normal ja mit, wobei hier glaube ich eher Mo-Fr gemeint ist.

    Naja trotzdem viel Glück damit


    Liebe Grüße


    Stefan
    „Was du nicht willst, dass man dir tu, das füg’ auch keinem andern zu“


Ähnliche Themen

  1. Editor - Java
    Von weyli im Forum Off Topic
    Antworten: 5
    Letzter Beitrag: 06.05.2010, 11:34
  2. Hats hier Programmierer?
    Von Donluigi im Forum Off Topic
    Antworten: 0
    Letzter Beitrag: 11.08.2009, 22:24
  3. Java
    Von Okatu im Forum Off Topic
    Antworten: 3
    Letzter Beitrag: 22.09.2005, 15:14

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •