ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
2895
2895
EMPFEHLEN
-
Hallo, ich habe ein Problem, ich will einen Terminplaner in Java realisieren mit dem ich
verschiedene Termine sowie eine Beschreibung der Termine in einem Kalender verwalten kann und die Termin mit einer Funktion sortiert anzeigen kann?
Code java: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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
import ConsoleInOut.*; import java.util.*; import java.text.*; class TerminplanerUI { GregorianCalendar aD = new GregorianCalendar(); public static void main(String arg[]) { int Eingabe = 0; int Jahr = 0; int Monat = 0; int Tag = 0; String Beschreibung; while (Eingabe!= 3) { { System.out.println("----------------------------------------------------------------------"); System.out.println("Bitte wählen Sie zwischen folgenden Funktionen: "); System.out.println(); System.out.println("Neuer Termin: 1"); System.out.println("Termine anzeigen: 2"); System.out.println("Anwendung beenden: 3"); System.out.println("----------------------------------------------------------------------"); Eingabe = Console.console_in_int(); } if (Eingabe == 1) { Terminplaner terminpl = new Terminplaner(); //Calendar aD = Calendar.getInstance(); System.out.println(); System.out.println("Bitte geben Sie den Termin ein: "); System.out.println("Jahr: "); Jahr = Console.console_in_int(); System.out.println("Monat: "); Monat = Console.console_in_int(); System.out.println("Tag: "); Tag = Console.console_in_int(); System.out.println("Terminbeschreibung: "); Beschreibung = Console.console_in(); System.out.println(); aD.set(GregorianCalendar.YEAR, Jahr); aD.set(GregorianCalendar.MONTH, Monat); aD.set(GregorianCalendar.DATE, Tag); Date date = aD.getTime(); System.out.println(date); } if (Eingabe == 2) { System.out.println("Inhalt des Terminkalenders"); } if ((Eingabe != 1) && (Eingabe != 2) && (Eingabe != 3)) { System.out.println("Falsche Eingabe - Bitte neu wählen im Menue"); } } System.out.println("Die Anwendung wurde beendet."); } } public class Terminplaner { //Attribute private String beschreibung; private String date; //private double verkaufspreis; //Konstruktor public Terminplaner() { } public String getBeschreibung() { return beschreibung; } public String getDate() { return date; } //Schreibende Methoden public void setBeschreibung(String Beschreibung) { beschreibung = Beschreibung; } public void setDate(String Date) { date = Date; } }
Ich hänge bei der Erzeugung des Kalenders und der Befüllung mit Daten.
Bitte um Hilfe. Viele Grüße,
-
hmm,
ne etwas genauere Beschreibung wo genau es hängt wäre vielleicht hilfreich ...
aber mal zwei Sachen,
a) das ändert zwar nix an der Funktion, aber laut Konvention wäre es schöner Variablen grundsätzlich mit Kleinbuchstaben zu beginnen, macht den Code auch leichter zu lesen. Und hilft bisweilen sogar Fehler zu vermeinden
weil
b) bei setdate benutzt Du Date als Variablennamen. Das macht Dir wohl Probleme, da Date eine bereits existierende Java-Klasse ist.
Übrigens, es ist kein Problem den Parameter einer Methode genau so zu nennen, wie eine Member-Variable der Klasse (also in dem Fall das kleingeschriebene date). Du musst dann nur die Member-Variable durch "this" ansprechen.
Code :1 2 3 4
public void setDate(String date) { this.date = date; }
Ach ja, so lange Du die Klasse TerminplanerUI nicht instanziierst wird auch aD nicht mit nem Kalender initialisiert. Möglicherweise wolltest Du den Kalender aD als static deklarieren, und in der main-Methode initialisieren ... Es wird wohl auch nicht gehen aD in main anzusprechen, so lange es nicht static ist
Vielleicht wolltest Du auch main nur benutzen, um eine Instanz von Terminkalender zu erzeugen, die wiederum eine die TerminkalenderUI-Klasse instanziiert, in der dann eine Funktion aufgerufen würde, die das macht, was main gerade macht.
Evtl. wolltest Du auch im Main nur eine Instanz von TerminplanerUI erzeugen, usw. ...
viele Grüße
StefanGeändert von gk71 (14.01.08 um 06:28 Uhr)
-
Wie schaffe ich es das ich pro Durchlaufene Schleife ein Datum erfassen kann
und es in einem Gregorianen Calendar speichern kann und die verschiedene Daten
wieder ausgeben kann. Bei meiner Routine überschreibt er pro Durchlauf immer das alte
Datum?
Code java: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
import ConsoleInOut.*; import java.util.*; import java.text.*; class MichaelUI { //GregorianCalendar aD1 = new GregorianCalendar(); public static void main(String arg[]) { int eingabe = 0; int jahr = 0; int monat = 0; int tag = 0; while(eingabe!=1) { // Testa terminpl1 = new Testa(int jahr); Calendar aD1 = Calendar.getInstance(); System.out.println("1 für Abbruch: "); System.out.println("Eingabe: "); eingabe = Console.console_in_int(); System.out.println(); System.out.println("Bitte geben Sie den Termin ein: "); System.out.println("Jahr: "); jahr = Console.console_in_int(); System.out.println("Bitte geben Sie den Termin ein: "); System.out.println("Monat: "); monat = Console.console_in_int(); System.out.println("Bitte geben Sie den Termin ein: "); System.out.println("Tag: "); tag = Console.console_in_int(); aD1.set(GregorianCalendar.YEAR, jahr); aD1.set(GregorianCalendar.MONTH, monat - 1); aD1.set(GregorianCalendar.DATE, tag); System.out.println("Datum: " + aD1.get(GregorianCalendar.YEAR)+ "." +aD1.get(GregorianCalendar.MONTH)); } } }
Viele Grüße, Michael
-
Hallo Michael,
Also das ganze hier heisst zwar Tutorial.de ... aber ich glaube nicht, dass das Forum dazu gedacht ist einen Programmierkurs zu machen. Du fragst sehr grundlegende Sachen. Ich würde Dir sehr ans Herz legen mal ein bisschen Einsteigerlieteratur über Java zu lesen. Probier mal:
http://www.galileocomputing.de/openbook/javainsel7/
oder (falls Du gut englisch kannst)
http://java.sun.com/docs/books/tutorial/
Da findest Du schon viele Antworten und gute Beispiele wie man das eine oder andere Problem angeht.
So, das war die Gardienenpredigt, jetzt zu Deiner Frage. Um mehrere Daten zu speichern kannst Du verschiedene Wege gehen. Der wahrscheinlich effektivste wäre über eine ArrayList. In der kannst Du jedes mal einen NEUEN GregorianCalendar mit dem jeweils neuen Datum hinzufügen. Später kannst Du die Calender über den eingebauten Iterator wieder auslesen (oder einfach über den Index). Falls Du zu jedem Datum eine Beziehung herstellen willst (z.B. eine Eingabe, die gemacht wurde) kannst Du auch eine HashTable verwenden (bitte dazu die Literatur zu Rate ziehen
). Falls Du vorher schon genau weisst, wieviele Daten es sein werden könntest Du auch ein Array verwenden (GregorianCalendar[] ), aber das dürfte für Deine Anwendung nicht flexibel genug sein.
Ich hoffe das hat Dir jetzt ein bisschen geholfen. Wie gesagt, zur genauen Anwendung schau bitte in den Tutorien und Referenzen, die es massenhaft im Netz gibt
...
Ach ja, denk daran, so wie Du das angehst sind Deine Daten nur in der main-Methode vorhanden, falls Du die Daten an anderer Stelle verwenden willst, solltest Du eine eigene Klasse verwenden, oder zumindest eine static Variable. Dazu noch ein Stichwort "Objektorientierte Programmierung". Die statische main-Methode dient eigentlich nur als Einstiegspunkt. Ab da würde man normalerweise eine Klasse instanziieren, die Daten halten kann, und Funktionen ausführen kann....
Hmmm ... gerade fällt mir was auf. Ich hoffe Du bist nicht der irrigen Meinung der GregorianCalender sei so was wie Dein Taschenkalender. Der GregorianCalender dient lediglich dazu ein Date-Objekt im Gregorianischen Kalender (z.B. gibt es in Indien, oder im Islamischen Raum, andere Kalender als z.B. der Gregorianische Kalender, der im europäischen/westlichen Kulturbereich gültig ist) darzustellen. Damit kannst Du nicht irgenwie sagen am soundsovielten habe ich den und den Termin, und ne Woche später nen anderen. Der GC hält nur ein einziges Datum!
viel Spaß noch beim tüfteln, viele Grüße
Stefan
-
Ich erhalte beim Debuggen einer Klasse Termin3 die Fehlermeldung
java.util.calendar is abstract, cannot be instantiated
das hängt wohl mit der Vererbung von der Klasse Calendar ab. Kann mir jemand sagen wie man das Problem umgeht?
Viele Grüße, Michael
-
21.01.08 09:13 #6
Hi,
schau mal abundzu in die Java API. Dann siehst du dass die Calendar-Klasse Methoden hat. Und da ist auch eine dabei die dir eine neue 'Calendar-Instanz erzeugt:Code :1
Calendar.getinstance()
"... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)
"Sir?, we're sorrounded!"
"Excellent, we can attack in any direction"
-
habe das gleiche problem!
also bei läuft es nicht ganz so gut!
so sollte ein beispiel ausruf aussehen aber bei mir geht es nicht so gut!
Code :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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
----------------------------------------------- Bitte wählen Sie zwischen folgenden Funktionen: Neuer Termin: 1 Termine anzeigen: 2 Anwendung beenden: 3 ----------------------------------------------- neuer Termin Keine gültige Eingabe. ----------------------------------------------- Bitte wählen Sie zwischen folgenden Funktionen: Neuer Termin: 1 Termine anzeigen: 2 Anwendung beenden: 3 ----------------------------------------------- 1 Bitte geben Sie den Termin ein: Jahr: 2006 Monat: 12 Tag: 5 Terminbeschreibung: Treffen mit Hans ----------------------------------------------- Bitte wählen Sie zwischen folgenden Funktionen: Neuer Termin: 1 Termine anzeigen: 2 Anwendung beenden: 3 ----------------------------------------------- 1 Bitte geben Sie den Termin ein: Jahr: 2006 Monat: 5 Tag: 3 Terminbeschreibung: Treffen mit Max ----------------------------------------------- Bitte wählen Sie zwischen folgenden Funktionen: Neuer Termin: 1 Termine anzeigen: 2 Anwendung beenden: 3 ----------------------------------------------- 2 Termin: Nr. 1 Datum: 3.5.2006 Beschreibung: Treffen mit Max Termin: Nr. 2 Datum: 3.11.2006 Beschreibung: Mein Name ist Markus Mustermann. Termin: Nr. 3 Datum: 5.12.2006 Beschreibung: Treffen mit Hans ----------------------------------------------- Bitte wählen Sie zwischen folgenden Funktionen: Neuer Termin: 1 Termine anzeigen: 2 Anwendung beenden: 3 ----------------------------------------------- 3 ----------------------------------------------- Die Anwendung wurde beendet. -----------------------------------------------
das ist mein code bisher:
Code :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 62 63 64 65 66 67 68 69 70 71
import inout.Console; import java.util.*; import java.text.*; class TerminplanerUI { public static void main(String arg[]) { int eingabe = 0; int jahr = 0; int monat = 0; int tag = 0; String beschreibung; { { System.out.println("----------------------------------------------------------------------"); System.out.println("Bitte wählen Sie zwischen folgenden Funktionen: "); System.out.println(); System.out.println("Neuer Termin: 1"); System.out.println("Termine anzeigen: 2"); System.out.println("Anwendung beenden: 3"); System.out.println("----------------------------------------------------------------------"); eingabe = Console.readInt(); } while (eingabe != 3) { Terminplaner terminpl = new Terminplaner(); //Calendar aD = Calendar.getInstance(); System.out.println(); System.out.println("Bitte geben Sie den Termin ein: "); System.out.println("Jahr: "); jahr = Console.readInt(); System.out.println("Monat: "); monat = Console.readInt(); System.out.println("Tag: "); tag = Console.readInt(); System.out.println("Terminbeschreibung: "); beschreibung = Console.readString(); System.out.println(tag + "." + monat + "."+ jahr + " " + beschreibung); } if (eingabe == 2) { System.out.println("Inhalt des Terminkalenders"); } if ((eingabe != 1) && (eingabe != 2) && (eingabe != 3)) { System.out.println("Falsche Eingabe - Bitte neu wählen im Menue"); } } if (eingabe == 3) { System.out.println("Die Anwendung wurde beendet."); } } }
-
17.01.10 22:40 #8
Hi,
Was 'geht nicht ganz so gut?
Ich bin gerade an einem ähnlichem Projekt, ich habe das so realisiert, dass es eine Klasse Termin gibt, die verschiedene Attribute hat. Darunter auch das Datum. Dieses ist durch einen Kalendar dargestellt:
In die Set-Methode kommen die Datumsattribute rein, wie diese genau aussieht, lässt sich der Api entnehmen, die habe ich jetzt nicht da.
Die Termin-Objekte sind in einer Liste gepeichert und ich habe keine Probleme mit dem Datum oder anderem.
Wird Zeit, dass Sun mal eine gescheite Kalendar-API rausbringt.
Ciao
DosCoderMan kann mich für das verantwortlich machen, was ich hier schreibe, nicht für das, was andere verstehen.
Sollte ich mal Mist labern weist mich bitte darauf hin.
Ich freue mich über ein Danke, wenn ich helfen konnte!
-
Also da ich noch recht neu in java, verstehe ich es nicht so ganz was ich machen muss!
kannst du mein quellcode so verändern bzw. makrien was ich verändern muss?
Ahja und bei mir läuft es nicht so durch wie bei beispieldurchlauf! Wenn ich 1 drücke kann ich termin eingeben aber das wars dann auch!
ich will wie das im beispiele machen klappt aber nicht! Termindaten werden auch nicht gespeichert!
-
lieber madara,
zwei Sachen vorweg:
- Die main() Methode dient nur als Einstiegespunkt in das Java-Programm, und sollte nicht den gesamten Code im sog. "Spaghetti-Format" beinhalten, wie das in grauer Vorzeit bei Basic-Programmen normal war. In Java werden Klassen definiert, die Daten speichern, und Funktionen ausführen (bitte Deinen Lehrer Dir das noch mal genau zu erklären .. ich geh mal davon aus, dass es für die Schule ist).
- Die Calendar-Klasse aus Java ist kein Kalender im Sinne eines Taschenkalenders (s.o. in diesem Beitrag).
Was Du machen solltest ist Deine Terminplaner-Klasse mit Variablen zu bestücken, in denen Du die Termine als Date speicherst. Dann kannst Du noch Funktionen erstellen, mit denen Du die Termine entsprechend verwalten kannst.
Schau Dir unbedingt auch noch mal das Konzept der objektorientierten Programmierung an!
In der main-Methode solltest nun Deinen Terminkalender instanziieren und benutzen. Würde in etwa so aussehen:
Schau Dir mal den Code in Ruhe an. Ich habe den nicht getestet, müsste aber so in etwa das machen, was Du brauchst. Versuch vor allem zu verstehen was da passiert. Du musst noch ein paar Sachen machen, so was wie überprüfen, ob die Eingaben stimmen, und die Verwaltung der Termine. Aber dazu lerne bitte selbständig aus der Api oder aus Tutorien, wie man die einzelnen Klassen anwendet (z.B. Calendar oder ArrayList, vielleicht brauchst Du auch andere Klassen).
Ach ja, dort wo neue Klasse steht musst Du eine neue Klasse anlegen, also eine neue Datei anlegen. Du kannst zwar alles in eine Datei einfügen. Aber das widerspricht den Java-Konventionen. Bei umfangreichen Programmen wäre das fatal.
Code :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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
import java.io.Console; import java.text.SimpleDateFormat; import java.util.Iterator; public class TerminplanerUI { public static void main(String arg[]) { String eingabe = ""; String datum; String beschreibung; int error; Terminplaner terminpl = new Terminplaner(); Console con = System.console(); if (con != null) { while (true) { System.out.println("----------------------------------------------------------------------"); System.out.println("Bitte wählen Sie zwischen folgenden Funktionen: "); System.out.println(); System.out.println("Neuer Termin: 1"); System.out.println("Termine anzeigen: 2"); System.out.println("Anwendung beenden: 3"); System.out.println("----------------------------------------------------------------------"); eingabe = con.readLine(); if ("1".equals(eingabe)) { System.out.println(); System.out.print("Bitte geben Sie den Termin ein: "); datum = con.readLine(); System.out.print("Terminbeschreibung: "); beschreibung = con.readLine(); error = terminpl.addTermin(datum, beschreibung); if (error != 0) { if (error == 1) { System.out.println("Falsches Datumsformat!"); } if (error == 2) { System.out.println("Falsches Tagesformat!"); } if (error == 3) { System.out.println("Falsches Monatsformat!"); } if (error == 4) { System.out.println("Falsches Jahresformat!"); } System.out.println("Termin nicht übernommen!"); } } if ("2".equals(eingabe)) { SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); Iterator<Termin> itTermine = terminpl.getTermine().iterator(); while (itTermine.hasNext()) { Termin t = itTermine.next(); System.out.println(sdf.format(t.getDatum()) + ", " + t.getBeschreibung()); } } if ("3".equals(eingabe)) { System.out.print("wirklich beenden (alle Eingaben gehen verloren) [ja/Nein]? "); eingabe = con.readLine(); if (eingabe != null && eingabe.equalsIgnoreCase("ja")) { break; } } } } } } ----------------------------------------NEUE KLASSE--------------------------------------------------------------------- import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.List; public class Terminplaner { List<Termin> termine; public Terminplaner() { termine = new ArrayList<Termin>(); } public int addTermin(String datum, String beschreibung) { Calendar c = new GregorianCalendar(); String[] datumteile = datum.split("."); if (datumteile.length != 3) { return 1; } if (datumteile[0].length() > 2) { return 2; } if (datumteile[1].length() > 2) { return 3; } if (datumteile[2].length() > 4) { return 4; } c.set(Integer.getInteger(datumteile[2]), Integer.getInteger(datumteile[1]), Integer.getInteger(datumteile[0])); termine.add(new Termin(c.getTime(),beschreibung)); return 0; } public List<Termin> getTermine() { return termine; } public Termin getTermin(int ordinal) { if (ordinal < termine.size()) { return termine.get(ordinal); } return null; } } ----------------------------------------NEUE KLASSE--------------------------------------------------------------------- import java.util.Date; public class Termin { Date datum = null; String beschreibung = ""; public Termin (){ } public Termin (Date datum, String beschreibung){ this.datum = datum; this.beschreibung = beschreibung; } public Date getDatum() { return datum; } public void setDatum(Date datum) { this.datum = datum; } public String getBeschreibung() { return beschreibung; } public void setBeschreibung(String beschreibung) { this.beschreibung = beschreibung; } }Geändert von gk71 (18.01.10 um 11:51 Uhr)
Ähnliche Themen
-
ASP Calendar
Von primo11 im Forum ASPAntworten: 1Letzter Beitrag: 22.02.10, 00:02 -
Calendar
Von Maik20 im Forum JavaAntworten: 6Letzter Beitrag: 05.12.08, 08:09 -
Gregorian Calendar
Von SMoeller im Forum JavaAntworten: 3Letzter Beitrag: 25.09.06, 17:10 -
Calendar fehlerhaft
Von boelkstoff im Forum JavaAntworten: 1Letzter Beitrag: 29.04.04, 18:42 -
asp.net Calendar
Von e.motion im Forum ASPAntworten: 2Letzter Beitrag: 02.02.03, 13:35





Zitieren
Login





