2016-08-09 1 views
0

Der Code unten tut was ich will außer für die allerletzte Ausgabe. HierKalender in While-Schleife verwenden?

Calendar cal = Calendar.getInstance(); 
    cal.clear(); 
    cal.set(1986, 8, 20); 
    int year = cal.get(Calendar.YEAR); 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
    while (year >= cal.get(Calendar.YEAR)) { 
     cal.add(Calendar.DAY_OF_MONTH, 7); 
     System.out.println(sdf.format(cal.getTime())); 
    } 

ist die Ausgabe:

1986-09-27 
1986-10-04 
1986-10-11 
1986-10-18 
1986-10-25 
1986-11-01 
1986-11-08 
1986-11-15 
1986-11-22 
1986-11-29 
1986-12-06 
1986-12-13 
1986-12-20 
1986-12-27 
1987-01-03 

Ich werde diese while-Schleife verwenden, irreversible Code auszuführen, und ich will es sein, wenn das Jahr nicht 1987 ist jedoch die 1987 Shows hier oben, und ich habe versucht, die while-Schleife Zustand Modifizieren der letzte Eintrag zu bekommen

1986-12-27

aber ohne Erfolg zu sein.

Der gewünschte Ausgang ist derselbe wie der obige Ausgang außer dem Datum 1987.

+0

Wollen Sie die Schleife 1987 überspringen oder bei 1987 –

+0

@SamOrozco halte ich es bei 1987 stoppen wollen –

Antwort

3

Ihre Schleife führt das Hinzufügen nach es führt die Überprüfung durch. Also wahrscheinlich wollen Sie gerade:

while (year >= cal.get(Calendar.YEAR)) { 
    System.out.println(sdf.format(cal.getTime())); 
    cal.add(Calendar.DAY_OF_MONTH, 7); 
} 

dass der erste Wert verwendet wird sich ändern, aber - so dass Sie einen zusätzlichen add Anruf möchten vor den Beginn der Schleife, wenn Sie den gleichen ersten Wert möchten, dass Sie‘ im Moment drucken.

1

Die java.time (Java 8) Alternative:

for(LocalDate date = LocalDate.of(1986, 9, 27); 
     date.getYear() < 1987; 
     date = date.plusWeeks(1)) { 
    System.out.println(DateTimeFormatter.ISO_DATE.format(date)); 
} 

Ausgang:

1986-09-27 
1986-10-04 
1986-10-11 
1986-10-18 
1986-10-25 
1986-11-01 
1986-11-08 
1986-11-15 
1986-11-22 
1986-11-29 
1986-12-06 
1986-12-13 
1986-12-20 
1986-12-27 
+0

Ich werde diese stattdessen verwenden, da andere mir gesagt haben, dass der Kalender bei einer meiner anderen Fragen veraltet ist. Danke, Jorn! –