Generische Liste des Typs Calendar

enrix

Mitglied
Hallo,
ich möchte ein Datum eingeben. Nenne es Anreise. Nun soll eine generische Liste erzeugt werden, welche als Listenelemente die Daten die innerhalb der Anreise und 100 Tage später beinhaltet. Also eine Zeitspanne wobei jedes Listenelement ein Datum des Typs Calendar darstellt.

Folgende Idee hatte ich dazu.

Code:
private List<Calendar>cal;

......



			i=0;
		
		while(i<100){
			Calendar DatumNeu = Calendar.getInstance();
			Anreise.add(Calendar.DATE, 1); 
			DatumNeu.set(Anreise.YEAR, Anreise.MONTH, Anreise.DAY_OF_MONTH);
			cal.set(i,DatumNeu);
			i++;
		}

Leider bekomme ich eine Fehlermeldung bei :cal.set(i,DatumNeu);
Es handelt sich um eine java.lang.NullPointerException.
Hat jemand eine Idee warum?
beste Grüße!
 
Hallo,
ich möchte ein Datum eingeben. Nenne es Anreise. Nun soll eine generische Liste erzeugt werden, welche als Listenelemente die Daten die innerhalb der Anreise und 100 Tage später beinhaltet. Also eine Zeitspanne wobei jedes Listenelement ein Datum des Typs Calendar darstellt.

Folgende Idee hatte ich dazu.

Code:
private List<Calendar>cal;

......
            i=0;
        
        while(i<100){
            Calendar DatumNeu = Calendar.getInstance();
            Anreise.add(Calendar.DATE, 1); 
            DatumNeu.set(Anreise.YEAR, Anreise.MONTH, Anreise.DAY_OF_MONTH);
            cal.set(i,DatumNeu);
            i++;
        }
Leider bekomme ich eine Fehlermeldung bei: cal.set(i,DatumNeu);
Es handelt sich um eine java.lang.NullPointerException.

Moin,

Deine Exception wird weder von 'i' noch von 'DatumNeu' sondern aller Voraussicht nach von 'cal' geworfen werden (oder sagt der Debugger was anderes?) ! !

Wie wird denn den 'cal' an diese Stelle im programm übergeben? Dieser relevante Code fehlt leider :-(

Du musst mehr Code posten ! !

Gruß
Klaus
 
Einen frohen 4. Advent und danke für die Hilfe. Ich hatte die Liste nicht korrekt initialisiert.
Nun habe ich den Fehler behoben. Allerdings habe ich der genrischen Liste den Vector-Datentyp zugeordnet. Das funktioniert soweit auch ganz gut. Ist dieses Form der Initialisierung üblich bei generischen Listen?
Code:
private Vector<Calendar> cal;
.
.
.
cal = new Vector<Calendar>();

Eine Frage bleibt noch, das Inkrementieren des Kalenders funktioniert nicht. Das Verfahren habe ich hier aus dem Forum rausgelesen. Ich bin davon ausgegangen, dass jeder neue Datensatz in der Liste cal das Nachfolgerdatum darstellt. Leider sind aber alle Datensätze gleich dem letzten Tag.
Code:
	public void setTimeStack(){	
		i=0;
		cal = new Vector<Calendar>();
		while(i<100){
			GregorianCalendar DatumNeu=new GregorianCalendar();
			Anreise.add(Calendar.DATE, 1); //Hier wird das Datum Anreise inkrementiert
			DatumNeu=Anreise; // Hier wird das neue Datum initialisiert
			cal.add(i, DatumNeu); //Neues Listenelement wird eingefügt
			i++;
		}
	}

Hat jemand einen Tip für mich?
 
Also, die lange Antwort findest Du hier: http://www.torsten-horn.de/techdocs/java-date.htm
im Abschnitt "Calendar und GregorianCalendar".

Die kurze Antwort: Stell dir Objekte vom Typ Calendar am besten als Fabrik vor. Innerhalb der Fabrik kannst du Einstellungen vornehmen und mittels der Methode #getTime() andere Objekte erzeugen, nämlich Datumsangaben (Objekte vom Typ Date). Den Calendar kannst Du dir echt so vorstellen wie einen Wandkalender, der noch um Zeitangaben ergänzt ist. Wenn Du ein spezielles Datum von ihm festhalten möchtest, brauchst Du von ihm ein Date.

Java:
Calendar calendar=new GregorianCalendar();
while(i<100){
  // Ändere die Einstellungen am Kalender.
  // TODO: Füge deine Datumsmodifikationen als Einstellungen am Kalender ein.
  cal.add(i, calendar.getTime()); //Neues Datum wird der Liste hinzugefügt.
  i++;
}
 
Zurück