snopsy Geschrieben 22. Mai 2002 Geschrieben 22. Mai 2002 Hi, ich habe jetzt ein Programm geschrieben, welches das aktuelle Datum abfrägt, in verschiedene Variablen aufteilt und am Ende wieder zusammensetzt. In einer Weile schleife soll das Datum hochgezählt werden, bis es mit einem vorher definierten Datum übereinstimmt. Die beiden Datums stehen in einer String-Variablen. Hier mal meine methode mit der While-Schleife: while (nowDate != reisebeginn) { if(nowDate.equals(reisebeginn)) { System.out.println("\n\nHeute geht's in Urlaub!!! \nYiiipppiiiieee Yiiiipppiiiieeee Yeeeaaahhhr"); } else { if(m == 04 || m == 06 || monat == "09" || m == 11) { if(t <= 29) { t++; count++; ausgabe(); } else { t = 01; m++; count++; ausgabe(); } System.out.println("Der Monat hat 30 Tage!"); } else if(m == 02) { System.out.println("Der Monat hat 28 Tage!"); } else { if(t <= 30) { t++; count++; ausgabe(); } else { t = 01; m++; count++; ausgabe(); } System.out.println("Der Monat hat 31 Tage!"); } } } [/PHP] Die Variable m und monat ist im prinzip das gleiche. Nur ist m ein Integer-wert und monat ein String-wert. nur als ich m == 09 angegeben habe, wurde immer eine Klammer verlangt. Hier meine Ausgabe-Methode: [PHP]tag = Integer.toString(t); monat = Integer.toString(m); nowDate = tag + "." + monat + "." + jahr; System.out.println("\nCount: " + count); System.out.println("Datum: " + nowDate); Hier meine Datums-methode: Date dtDate = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); nowDate = sdf.format(dtDate); tag = nowDate.substring(0,2); monat = nowDate.substring(3,5); jahr = nowDate.substring(6,10);[/PHP] Das Problem ist, daß die While schleife immer durchläuft. auch wenn das Datum bereits erreicht ist. Wenn das Datum erreicht ist, wird immer Heute geht's in Urlaub... angezeigt. Woran liegt es, daß meine Schleife nicht endet??? :confused: Danke & Gruß Snopsy Zitieren
Jaraz Geschrieben 22. Mai 2002 Geschrieben 22. Mai 2002 Hallo, das man Strings nicht über Operatoren vergleichen kann, hast du doch schon herausgefunden, da du in Zeile 3 equals benutzt. Demnach muss nowDate != reisebeginn immer true sein. Gruß Jaraz Zitieren
snopsy Geschrieben 22. Mai 2002 Autor Geschrieben 22. Mai 2002 Ich weiß jetzt woran es liegt, daß es net geht. Mir ist gerade der einfall gekommen. es kann sein, daß ich morgen dazu andere Fragen habe, mal sehen Cu Snopsy Zitieren
Mirko Geschrieben 23. Mai 2002 Geschrieben 23. Mai 2002 Hi, tue mir doch bitte den Gefallen und beschäftige dich mal mit dem GregorianCalendar. Damit gehen solche vergleiche doch soooooo einfach. Und auch das Hochzählen ist damit kein Problem. Da brauchst du dir dann keine Gedanken mehr zu machen, wieviele Tage ein Monat hat etc. .... Andererseits hast du dich bis hier hin natürlich schon tapfer durchgekämpft und das will man dann ja auch nicht so einfach wegwerfen.... Zitieren
snopsy Geschrieben 23. Mai 2002 Autor Geschrieben 23. Mai 2002 Hi Mirko, ja das habe ich jetzt auch vor, mich mal mit dem GregorianCalendar zu beschäftigen. Aber irgendwie hat das gar nicht so einfach ausgesehen auf den ersten Blick. Da hast DU recht, daß man das dann nicht so einfach verwerfen will. ABer ich werde mir die Variante jetzt mal anschauen Grüßle Snopsy Zitieren
Mirko Geschrieben 23. Mai 2002 Geschrieben 23. Mai 2002 Vielleicht gebe ich dir einfach mal ein paar Tipps zum GregorianCalendar. Der GregorianCalendar hält sämtliche Daten in einem Array. Auf die einzelnen Felder greift man immer mit der get() methode zu, und übergibt ihr den Feldindex, dessen Inhalt man haben will. Zum Beispiel: GregorianCalendar tempCalendar = (GregorianCalendar) GregorianCalendar.getInstance(); // damit hast du einen Calendar mit dem aktuellen Datum samt Uhrzeit erzeugt. //Jetzt kannst du auf die Felder zugreifen. Für jedes Feld gibt es eine Konstante, die du benutzen kannst int tempYear = tempCalendar.get(Calendar.YEAR); int tempMonth = tempCalendar.get(Calendar.MONTH); int tempDay = tempCalendar.get(Calendar.DAY_OF_MONTH); //Das Verändern der einzelnen Felder funktioniert mit set() //Jetzt noch zu deinem Hochzählen: Du kannst einfach mit add() die Felder hochzählen tempCalendar.add(Calendar.DAY_OF_MONTH,1) //zählt den Tag eins hoch // Bei allen veränderungen werden jeweils die Felder konsistent gehalten, du brauchst dich also nicht um einen Monatgswechsel zu kümmern oder so... [/PHP] So, ich hoffe das erleichtert dir den Einstieg. Ansonsten einfach nur Nachfragen... Gruß Mirko Zitieren
snopsy Geschrieben 23. Mai 2002 Autor Geschrieben 23. Mai 2002 Hi Mirko, danke für den Tip! Das hat mich schon deutlich weitergebracht. Ich hab das jetzt mal so umgesetzt und noch ne While-Schleife eingebaut. Aber ich verstehe net, warum die While-Schleife nicht abbricht, wenn die Bedingung erreicht ist, kann mir das jemand sagen, woran das liegt? hier mein bisheriges Programm: import java.util.*; public class Datum { int tag = 31; int monat = 07; int jahr = 2002; int count = 0; public Datum() { super(); } public void aktuellesDatum() { GregorianCalendar tempCalendar = (GregorianCalendar) GregorianCalendar.getInstance(); int tempYear = tempCalendar.get(Calendar.YEAR); int tempMonth = tempCalendar.get(Calendar.MONTH); int tempDay = tempCalendar.get(Calendar.DAY_OF_MONTH); System.out.println("Tag: " + tempDay); System.out.println("Monat: " + tempMonth); System.out.println("Jahr: " + tempYear); while(tempDay != tag) { tempCalendar.add(Calendar.DAY_OF_MONTH,1); int tempDayNew = tempCalendar.get(Calendar.DAY_OF_MONTH); count++; System.out.println("\nNeuer Tag: " + tempDayNew); System.out.println("Count: " + count); } } }[/PHP] Ich hab nichts mehr gefunden, woran das liegen könnte. Danke schon für die Hilfe Gruß Snopsy Zitieren
Jaraz Geschrieben 23. Mai 2002 Geschrieben 23. Mai 2002 Hallo, tempDay != tempDayNew Du änderst tempDayNew, fragst aber tempDay ab. Gruß Jaraz Zitieren
snopsy Geschrieben 24. Mai 2002 Autor Geschrieben 24. Mai 2002 Hey! ich danke Euch. Mein Script läuft bis jetzt wunderbar. Ich habe es jetzt sogar soweit. daß der Monat hochgezählt wird. Und zwar zähle ich den mit Hilfe der maximalen Tage im Monat hoch. Diese lasse ich mir geben und überprüfe das dann im if. Denn leider gibt es für den Monat und das Jahr ja keine add-Funktion. Aber das ist nicht so schlimm. Das mit den Tagen ist das wichtigste und das ist geschafft :cool: :bimei Nur gibt es jetzt ein Problem. Ich lasse mir schön das Datum geben und anzeigen. Heute ist ja der 24.5.2002. Allerdings wird mir der 24.4.2002 angezeigt. Woran liegt das, daß mir hier nicht der richtige Monat angezeigt wird? Was aber lustig ist, ich lasse mir noch die maximalen Tage des Monats anzeigen zum vergleichen, ob das übereinstimmt. Ergebnis hierbei ist, daß 31 Tage angezeigt werden. Also das richtet sich dann wiederrum wirklich aktuellen Datum (also 24.5.2002) Denn der April hat ja nur 30 Tage. kann man das irgendwie speziell regeln, daß das richtig angezeigt wird, oder soll ich einfach bißle schummeln und einfach gleich beim Monat 1 dazuzählen??? hier nochmals der Quellcode, wie ich mir das Datum und die maximalen Tage anzeigen lasse: GregorianCalendar tempCalendar = (GregorianCalendar) GregorianCalendar.getInstance(); int tempYear = tempCalendar.get(Calendar.YEAR); int tempMonth = tempCalendar.get(Calendar.MONTH); int tempDay = tempCalendar.get(Calendar.DAY_OF_MONTH); System.out.println("Tag: " + tempDay); System.out.println("Monat: " + tempMonth); System.out.println("Jahr: " + tempYear); int tageMonat = tempCalendar.getActualMaximum(tempCalendar.DAY_OF_MONTH); System.out.println("Der Monat hat " + tageMonat + " Tage!");[/PHP] Danke & Gruß Snopsy P.S.: Ich denke mal, es ist am einfachsten ich mache einen beschummler und zähle gleich am Anfang einfach zum Monat noch 1 dazu! Ich will nur mal wissen, wie ihr es machen würdet. Zitieren
Jaraz Geschrieben 24. Mai 2002 Geschrieben 24. Mai 2002 Moin, Moin, ich wusste, dass als nächstes diese Frage kommt. Monate fangen mit 0 an. month - the value used to set the MONTH time field in the calendar. Month value is 0-based. e.g., 0 for January. Gruß Jaraz Zitieren
snopsy Geschrieben 24. Mai 2002 Autor Geschrieben 24. Mai 2002 ahso, na da hätte ich ja auch selber drauf kommen können ich idiotin Ich seh die Tabelle ja noch vor mir liegen MONTH gehen von 0-11 oh mann oh mann! Erst jetzt realisier ich des wo Dus sagst. na was solls. also ich habs jetzt so realisiert, daß ich zum Monat gleich 1 dazuzähle und es funzt wonderbra :bimei :bimei :OD :WD Cool CU Snopsy Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.