Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Applikationen Probleme mit Anwendungsprogrammen aller Art gehören hier hin.

Java problem

Diskussion: Java problem im Forum Applikationen, in der Kategorie Software Home; Anzeige hallo eine classe namens Datum(t, m, j) soll vereinbart werden mit den methoden: bestimme Wochentag; Ist es ein schaltjahr ...

Like Tree1Likes

Antwort
Alt 07.04.11, 23:13   #1 (permalink)
 
Registriert seit: 07.04.11
flare Leistung: Facit NTK
Likes: 0
Standard Java problem

Anzeige

hallo
eine classe namens Datum(t, m, j) soll vereinbart werden mit den methoden: bestimme Wochentag; Ist es ein schaltjahr oder nicht; Die anzahl der Tage zwischen einem zweitem datum;
.. Beachte, Schaltjahre werden mit einerechnet und es müssen 2 mögliche Daten sein (nicht: 33.14.2000)

Es soll ein einfaches programm werden mit einer klasse Datum und einer testKlasse in welcher die beiden Daten vereinbart und alle ergebnisse ausgegeben werden.

.. Ich weiß, es ist vllt nicht so schwer, aber ich bekomm es einfach nicht hin und bräucht hier hilfe. Falls mir jemand genau erklären kann, wie ich den abstand der beiden daten hinbekomm, danke - jedoch hab ich auch nichts gegen kleine denkanstöße.
danke


Geändert von flare (08.04.11 um 00:29 Uhr)
flare ist offline   Mit Zitat antworten
Alt 07.04.11, 23:34   #2 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Deine Hausaufgaben?

Mal ehrlich, du wirst hier keinen finden, der dir deine Hausaufgaben macht. Wenn du aber deinen bisherigen Code postest und schreibst, wo genau du Probleme hast und nicht weiter kommst, dann wird sich sicherlich jemand finden, der dir mit ein paar Denkanstößen und evtl. ein paar Zeilen Code weiterhilft.
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 07.04.11, 23:45   #3 (permalink)
 
Registriert seit: 05.04.11
~ihja Leistung: Z3
Likes: 3
Wink

Zitat:
Deine Hausaufgaben?

Mal ehrlich, du wirst hier keinen finden, der dir deine Hausaufgaben macht. [...]
Mist du warst schneller...

Naja. Grundsätzlich würde ich sagen, dass das nicht die schwerste Aufgabe darstellt. Was nützlich sein könnte wäre eine allgemeine Abfangmethode für falsche Daten, die jedes eingelesene Datum überprüft. Ich könnte mir auch vorstellen, dass Java schon ein Datumsformat mitbringt, sodass eine Konvertierung dir wahrscheinlich alles was du brauchst zur Verfügung stellt.

Aber ich kann mich meinem Vorredner nur anschließen:

Zitat:
[...] Wenn du aber deinen bisherigen Code postest und schreibst, wo genau du Probleme hast und nicht weiter kommst, dann wird sich sicherlich jemand finden, der dir mit ein paar Denkanstößen und evtl. ein paar Zeilen Code weiterhilft.
Also hau erstmal rein...
~ihja ist offline   Mit Zitat antworten
Alt 08.04.11, 00:12   #4 (permalink)
Themenstarter
 
Registriert seit: 07.04.11
flare Leistung: Facit NTK
Likes: 0
Standard

da mal das was ich bissher hab, funktioniert auch nur noch abstände zwischen 2 Daten geht nicht, bin jz schon 10 stunden gesessen um ne möglichkeit zu finden, aber irgendetwas passt nie..

HTML-Code:
public class Datum {
   private int t, m, j;
    public Datum(int t, int m, int j) {
        this.t=t;
        this.m=m;
        this.j=j;
    }
    public int getT() { return t;}
    public int getM() { return m;}
    public int getJ() { return j;}
    public String wochentag() {
        int h, ja, je, eins, zwei, drei;
        ja=j/100;
        if (m==1||m==2) {
            je=(j-1)%100;
        }
        else {
            je=j%100;
        }
        if (m==1) {
            m=13;
        }
        if (m==2) {
            m=14;
        }
        eins=(m+1)*26/10;
        zwei=je/4;
        drei=ja/4;
        h=(t+eins+je+zwei+drei-2*ja)%7;
        if (h<0) {
            h=h+7;
        }
        if (m==13||m==14) {
            if (j==2000) {
                h=h+1;
                if (h==7) {
                    h=0;
                }
            }
        }
        if (h==1) { return "Sonntag"; }
        if (h==2) { return "Montag"; }
        if (h==3) { return "Dienstag"; }
        if (h==4) { return "Mittwoch"; }
        if (h==5) { return "Donnerstag"; }
        if (h==6) { return "Freitag"; }
        if (h==0) { return "Samstag"; }
        return "falsch";
    }

    public String istSchaltjahr() {
        String schaltjahr;
        if (j%4==0&&j%100!=0||j%400==0) {
            return "Es ist ein Schaltjahr";
        }
        else {
            return "Es ist kein Schaltjahr";
        }
    }
}



public class DatumTest {
    public static void main(String[] args) {
        Datum a=einlesen();
        System.out.println("2tes Datum:");
        Datum b=einlesen();
        int tag=a.getT();
        int monat=a.getM();
        int jahr=a.getJ();
        int tag2=b.getT();
        int monat2=b.getM();
        int jahr2=b.getJ();
        String tage=a.wochentag();
        String istEinSchaltjahr=a.istSchaltjahr();
        System.out.println("Der "+tag+"."+monat+"."+jahr+" ist ein " +tage);
        System.out.println(istEinSchaltjahr);
    }

    public static Datum einlesen() {
        boolean schaltjahr;
        int t, m, j, a;
        do {
            a=0;
            t=Console.readInt("Tag: " );
            m=Console.readInt("Monat: ");
            j=Console.readInt("Jahr: ");
            if (j%4==0&&j%100!=0||j%400==0) {
                schaltjahr=true;
            }
            else {
                schaltjahr=false;
            }
            if (schaltjahr==true&&m==2&&t>29) {
                System.out.println("Dieses Datum gibt es nicht! Erneute eingabe: ");
                a=1;
            }
            if (schaltjahr==false&&m==2&&t>28) {
                System.out.println("Dieses Datum gibt es nicht! Erneute eingabe: ");
                a=1;
            }
            if (m==1&&t>31||m==3&&t>31||m==5&&t>31||m==7&&t>31||m==8&&t>31||m==10&&t>31||m==12&&t>31) {
                System.out.println("Dieses Datum gibt es nicht! Erneute eingabe: ");
                a=1;
            }
            if (m==4&&t>30||m==6&&t>30||m==9&&t>30||m==11&&t>30) {
                System.out.println("Dieses Datum gibt es nicht! Erneute eingabe: ");
                a=1;
            }
        } while(a==1);
        return new Datum(t, m, j);
    }
}

Geändert von flare (08.04.11 um 00:26 Uhr) Grund: übersichtlichkeit
flare ist offline   Mit Zitat antworten
Alt 08.04.11, 00:27   #5 (permalink)
 
Registriert seit: 05.04.11
~ihja Leistung: Z3
Likes: 3
Standard

Wie wärs mit den paar Tabs, dem Codetag...

Zitat:
[...] bissher [...] bin jz schon 10 stunden gesessen [...] irgendetwas passt nie
...und vielleicht nem Duden? Ich meine ja nur: Bevor man anfängt eine Programmiersprache zu lernen sollte man erstmal die Muttersprache sicher können. Vielleicht hast du ja schnell geschrieben, aber auch wenn ich noch nicht lange hier unterwegs bin, weiß ich wohl, dass hier auf Sprachrichtigkeit Wert gelegt wird.

Zitat:
Ich könnte mir auch vorstellen, dass Java schon ein Datumsformat mitbringt, [...]
Nur als Beispiel mal hier. Das bringt alles mit was du brauchst und sollte deinen Wust von Code ein wenig übersichtlicher machen.
~ihja ist offline   Mit Zitat antworten
Alt 08.04.11, 00:33   #6 (permalink)
Themenstarter
 
Registriert seit: 07.04.11
flare Leistung: Facit NTK
Likes: 0
Standard

ich hab es so gelernt und so muss ich es auch schreiben hab mich nun schon ewigkeiten umgesehn ob ich irgendetwas finde wie ich es auf meiner art lösen kann, nur ist das alles so geschrieben, dass ich es nicht verstehe ich kann nichts dafür das man es mir so beibringt, ich mach es einfach
flare ist offline   Mit Zitat antworten
Alt 08.04.11, 00:37   #7 (permalink)
Senior Member
 
Benutzerbild von lookshe
 
Registriert seit: 10.03.07
lookshe Leistung: 8086
Likes: 19
Standard

Hier mal der richtige Link, es fehlt das html am Ende
Referenz: java.util.Date
lookshe ist offline   Mit Zitat antworten
Alt 08.04.11, 00:39   #8 (permalink)
 
Benutzerbild von Scutus
 
Registriert seit: 02.09.10
Scutus Leistung: Pentium IScutus Leistung: Pentium IScutus Leistung: Pentium I
Scutus eine Nachricht über ICQ schicken Scutus eine Nachricht über Skype™ schicken
Likes: 21
Standard

oh man...heute sind ja wieder hilfswütige Leute unterwegs einfach auf die Bib zu verweisen ist echt spitze...

zu deinem Problem:

Abgesehen von dem Code, den du produziert hast, könntest du den Abstand von verschiedenen Daten ungefähr so lösen: Du könntest alles in Tage umwandeln und dann damit rechnen, eventuell das Ganze noch etwas aufpeppen, indem du vllt nicht alles umwandelst, sondern in deren Systemen lässt. Dabei musst du dann aber auch eventuell mit negativen Tagen, etc. rumrechnen - aber wir wollen es ja nicht zu einfach machen

Das wäre jetzt mein erster Gedanke, wie ich das Problem angehen würde - nicht gerade der kreativste, aber er sollte zur Lösung führen...

Grüße
Tarantoga likes this.
Scutus ist offline   Mit Zitat antworten
Alt 08.04.11, 00:42   #9 (permalink)
Themenstarter
 
Registriert seit: 07.04.11
flare Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Zitat von Scutus Beitrag anzeigen
könntest du den Abstand von verschiedenen Daten ungefähr so lösen: Du könntest alles in Tage umwandeln und dann damit rechnen
das in tage umwandeln hab ich schon versucht ich hab die tage vom 1.1.1 bis zum ersten datum und die tage von 1.1.1 bis zum 2ten datum ermittelt und dann einfach minus gerechnet, falls negativ *(-1).
Nur irgendetwas hat da garnicht gepasst was das einbeziehen von den schaltjahren betrifft..
flare ist offline   Mit Zitat antworten
Alt 08.04.11, 00:49   #10 (permalink)
 
Registriert seit: 05.04.11
~ihja Leistung: Z3
Likes: 3
Standard

Zitat:
oh man...heute sind ja wieder hilfswütige Leute unterwegs einfach auf die Bib zu verweisen ist echt spitze...
Hast ja Recht, aber es ist schon spät und meiner Meinung würde es das Programm eindeutig simpler gestalten.

Nun also etwas konkreter: Ist "nur" der Abstand falsch oder gibt es einen anderen Fehler?


Zeig vielleicht nochmal den Code und mach einen Kommentar wo die Abstandsfunktion ist. Oben finde ich die nicht ganz.

Geändert von ~ihja (08.04.11 um 00:51 Uhr)
~ihja ist offline   Mit Zitat antworten
Alt 08.04.11, 00:50   #11 (permalink)
 
Benutzerbild von Scutus
 
Registriert seit: 02.09.10
Scutus Leistung: Pentium IScutus Leistung: Pentium IScutus Leistung: Pentium I
Scutus eine Nachricht über ICQ schicken Scutus eine Nachricht über Skype™ schicken
Likes: 21
Standard

okay...aber wieso von einem bestimmten Datum aus?

Ein normales Jahr hat 365 Tage, ein Schaltjahr 366. Wenn man jetzt einfach 2006*365 (mal abgesehen von den Schaltjahren) hat man die Tage, dann noch die Monate drauf und den konkreten Tag. Dabei musst du noch bei ein paar Sachen aufpassen, aber eigentlich sehe ich darin kein fundamentales Problem. Du kannst ja mal deinen Versuch reinstellen...

Wie realisiert du eigentlich den Vergleich? durch eine neue Methode innerhalb der Klasse?
Scutus ist offline   Mit Zitat antworten
Alt 08.04.11, 00:55   #12 (permalink)
Themenstarter
 
Registriert seit: 07.04.11
flare Leistung: Facit NTK
Likes: 0
Standard

es funktionieren nur die tage dazwischen nicht
jap, neue Methode in der klasse (:
ja, so einfach hab ichs mir auch vorgestellt, aber irgendwie war ich dann schon ziemlich verwirrt nach dem ganzen mist den ich da gepfuscht hab, drum hab ichs gelöscht und wollt das alles von vorne anfangen. Jedoch wollt ich hald jz nachschaun ob hier irgendjemand einen einfacheren algorythmus weiß
Zitat:
oh man...heute sind ja wieder hilfswütige Leute unterwegs einfach auf die Bib zu verweisen ist echt spitze...
keine ahnung was ihr mit Bib meint
flare ist offline   Mit Zitat antworten
Alt 08.04.11, 01:01   #13 (permalink)
 
Registriert seit: 05.04.11
~ihja Leistung: Z3
Likes: 3
Standard

Mal "Pseudomischcode" um die Tage aus den Jahren zu extrahieren:

Code:
long anzahlTageA;

for(int JahreA; JahreA>= 0, JahreA--) {
  if(JahreA == schaltjahr) {
    anzahlTageA == anzahlTageA +366;
  }
  else {
    anzahlTageA == anzahlTageA +365;
  }
}
Das sollte klappen...
Monate schaffst du selber und dann machst du das noch mit dem 2. Datum und Rest ist wohl klar.


bib -> bibliothek/library -> hier

Geändert von CDW (09.04.11 um 00:16 Uhr) Grund: QUOTE!=CODE
~ihja ist offline   Mit Zitat antworten
Alt 08.04.11, 01:04   #14 (permalink)
 
Benutzerbild von Scutus
 
Registriert seit: 02.09.10
Scutus Leistung: Pentium IScutus Leistung: Pentium IScutus Leistung: Pentium I
Scutus eine Nachricht über ICQ schicken Scutus eine Nachricht über Skype™ schicken
Likes: 21
Standard

ich würde nicht darauf warten, dass dir jemand einen code präsentiert dazu kann ich nur sagen:

Zitat:
Zitat von Samuel Beckett
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better.
Scutus ist offline   Mit Zitat antworten
Alt 08.04.11, 01:06   #15 (permalink)
Themenstarter
 
Registriert seit: 07.04.11
flare Leistung: Facit NTK
Likes: 0
Standard

ja aber wie genau soll ich das angehn? weil schaltjahr zählt doch erst ab dem 29ten februar um 1 dazu für den fall eines schaltjahres davor zählen die tage normal durch
flare ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Applikationen » Java problem
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61