Hallo,
eine ähnliche Aufgabe war vor ein paar Jahren mal in der Prüfung dran und unser Prof hat sie nun etwas (zur Übung abgeändert)
Es gibt Projekte, die ein Enddatum besitzen. Erstellen Sie eine Liste von 10 Projekten die ein "zufälliges" Enddatum (max. 50 Jahre in der Zukunft) besitzen. Löschen Sie nun alle Projekte aus dieser Liste, die weiter als 20 Jahre vom heutigen Tag an in der Zukunft liegen und geben Sie anschließend aus wie viele gelöscht wurden.
class Projekte
main
Es wird nicht gelöscht
Ausgabe sieht so aus
Wieso wird nichts gelöscht?? Danke
eine ähnliche Aufgabe war vor ein paar Jahren mal in der Prüfung dran und unser Prof hat sie nun etwas (zur Übung abgeändert)
Es gibt Projekte, die ein Enddatum besitzen. Erstellen Sie eine Liste von 10 Projekten die ein "zufälliges" Enddatum (max. 50 Jahre in der Zukunft) besitzen. Löschen Sie nun alle Projekte aus dieser Liste, die weiter als 20 Jahre vom heutigen Tag an in der Zukunft liegen und geben Sie anschließend aus wie viele gelöscht wurden.
class Projekte
Java:
public class Projekte {
// Enddatum des Projektes
private GregorianCalendar end = new GregorianCalendar();
public GregorianCalendar getEnd() {
return end;
}
public void setEnd(GregorianCalendar end) {
this.end = end;
}
}
main
Java:
public static void main(String[] args) {
List <Projekte> list = new ArrayList<Projekte>();
erstellen(list);
ausgabe(list);
löschen(list);
}
//Liste erstellen
public static void erstellen(List <Projekte> list){
for(int i=0; i<10; i++){
Projekte p = new Projekte();
Random rnd = new Random();
int x =0;
x=1+rnd.nextInt(50);
p.getEnd().add(Calendar.YEAR, x);
list.add(p);
}
}
//ausgabe der Liste
public static void ausgabe(List <Projekte> list){
SimpleDateFormat sdf = new SimpleDateFormat("YYYY");
for(Projekte current : list){
System.out.println(sdf.format(current.getEnd().getTime()));
}
}
public static void löschen(List <Projekte> list){
SimpleDateFormat sdf = new SimpleDateFormat("YYYY");
GregorianCalendar gcal = new GregorianCalendar();
gcal.add(Calendar.YEAR, 20);
System.out.println();
System.out.println("Alles nach dem Jahr "+ sdf.format(gcal.getTime())+ " wird gelöscht ");
System.out.println();
int counter =0; //Variable für die Anzahl der gelöschten Elemente
//Liste von hinten nach vorne durchgehen
for(int i=list.size()-1; i>=0; i--){
//Wenn das Enddatum eines Projektes nach dem oben gesetzten Datum ist, dann löschen
if(list.get(i).getEnd().after(gcal)){
System.out.println(sdf.format(list.get(i).getEnd().getTime())+ " wurde gelöscht ");
list.remove(i);
counter++;
}
}
System.out.println();
System.out.println("Insgesamt wurden "+counter+" Datensätze gelöscht ");
}
Es wird nicht gelöscht
Ausgabe sieht so aus
Code:
2029
2023
2036
2028
2020
2017
2030
2022
2022
2035
Alles nach dem Jahr 2036 wird gelöscht
Insgesamt wurden 0 Datensätze gelöscht
Wieso wird nichts gelöscht?? Danke