Slave a tutti.
Sto implementando una classe che mi stampi un calendario ma riscontro un'anomalia quando devo recuperare la settimana ad esempio quella corrente.
Posto il codice che mi da il problema
ed un main
in pratica se il giorno cade di venerdì, sabato o domenica la settimana che mi viene restituita è quella precendente a quella che dovrebbe essere.
Magari dalla spiegazione non si capisce ma mandandolo in esecuzione sarà tutto più chiaro.
Grazie infinite a chi mi darà una mano.
Sto implementando una classe che mi stampi un calendario ma riscontro un'anomalia quando devo recuperare la settimana ad esempio quella corrente.
Posto il codice che mi da il problema
Codice:
package calendario;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
public class Calendario {
private static String[] nomiMesi = {"Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"};
private GregorianCalendar dataAttuale;
/**Questo costruttore crea un'istanza della classe impostando la data del
* calendario a quella corrente
*
*/
public Calendario() {
GregorianCalendar dataCorrente = new GregorianCalendar(Locale.ITALIAN);
this.dataAttuale = dataCorrente;
}
/**Questo costruttore crea un'istanza della classe impostando la data del
* calendario a quella passata come parametro
*
* @param dataAttuale
*/
public Calendario(GregorianCalendar dataAttuale) {
this.dataAttuale = dataAttuale;
}
/**Questo metodo ritorna un intero corrispondente alla settimana alla quale
* appartiene la data attuale
*
*/
public int getSettimanaAttuale() {
return dataAttuale.get(Calendar.WEEK_OF_MONTH);
}
/**Questo metodo fa avanzare la data attuale al mese successivo
*
*/
public void aggiungiMese() {
dataAttuale.add(Calendar.MONTH, 1);
}
/**Questo metodo restituisce la data attuale
*
*/
public Calendar getDataAttuale() {
return dataAttuale;
}
/**Questo metodo restituisce una stringa con le informazioni sulla settimana
*
* @return
*/
public String stampaInfoSettimana() {
return dataAttuale.get(Calendar.DATE) + " " + nomiMesi[dataAttuale.get(Calendar.MONTH)] + " --> " + dataAttuale.get(Calendar.WEEK_OF_MONTH);
}
}
Codice:
package calendario;
public class Main {
public static void main(String[] args) {
Calendario c = new Calendario();
for (int i = 0; i < 12; i++) {
System.out.println(c.stampaInfoSettimana());
c.aggiungiMese();
}
}
}
Magari dalla spiegazione non si capisce ma mandandolo in esecuzione sarà tutto più chiaro.
Grazie infinite a chi mi darà una mano.