| Applikationen Probleme mit Anwendungsprogrammen aller Art gehören hier hin. |
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 ...
![]() |
| | #1 (permalink) |
| Registriert seit: 07.04.11 ![]() Likes: 0 | 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) |
| | |
| | #2 (permalink) |
| Registriert seit: 06.06.09 ![]() Likes: 6 | 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. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) | ||
| Registriert seit: 05.04.11 ![]() Likes: 3 | Zitat:
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:
| ||
| | |
| | #4 (permalink) |
| Themenstarter Registriert seit: 07.04.11 ![]() Likes: 0 | 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 |
| | |
| | #5 (permalink) | ||
| Registriert seit: 05.04.11 ![]() Likes: 3 | Wie wärs mit den paar Tabs, dem Codetag... Zitat:
Zitat:
| ||
| | |
| | #6 (permalink) |
| Themenstarter Registriert seit: 07.04.11 ![]() Likes: 0 | ich hab es so gelernt und so muss ich es auch schreiben |
| | |
| | #8 (permalink) |
| 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 | |
| | |
| | #9 (permalink) | |
| Themenstarter Registriert seit: 07.04.11 ![]() Likes: 0 | Zitat:
Nur irgendetwas hat da garnicht gepasst was das einbeziehen von den schaltjahren betrifft.. | |
| | |
| | #10 (permalink) | |
| Registriert seit: 05.04.11 ![]() Likes: 3 | Zitat:
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) | |
| | |
| | #11 (permalink) |
| 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? | |
| | |
| | #12 (permalink) | |
| Themenstarter Registriert seit: 07.04.11 ![]() Likes: 0 | 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:
| |
| | |
| | #13 (permalink) |
| Registriert seit: 05.04.11 ![]() Likes: 3 | 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;
}
} 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 |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |