Questo programma chiede l'inserimento della propria data di nascita e quindi esegue alcune operazioni: calcola in quale giorno della settimana siete nati, quanti giorni avete vissuto e quanti ne mancano al vostro prossimo compleanno. In seguito inserendo sempre un numero intero calcola la data in cui vesteggerete un particolare anniversario, come il millesimo giorno di vita, ecc. Inserendo al posto della data di nascita, la data del vostro matrimonio o fidanzamento potrete sapere quando sarà il vostro 1000 giorno d'amore.
Come si può vedere dai comandi 'import' il programma richiede delle speciali librerie. Quindi il codice qui sotto serve solo per illustrare il funzionamento del programma.
import prog.io.*;
import prog.utili.Data;
import prog.utili.MeseDellAnno;
import prog.utili.GiornoDellaSettimana;
class Data1 {
public static void main(String[] args) {
ConsoleInputManager tastiera = new ConsoleInputManager();
ConsoleOutputManager video = new ConsoleOutputManager();
//nuovo oggetto Data a cui viene assegnata la data corrente
Data oggi = new Data();
//nuovo tipo enumerativo per oggi
GiornoDellaSettimana oggigiorno;
oggigiorno = oggi.getGiornoDellaSettimana();
//verifica se quest'anno è bisestile
boolean oggibis;
oggibis = oggi.isInAnnoBisestile();
//mostra il risultato
//stampa la data corrente + il giorno della settimana
video.println("Data odierna: " + oggigiorno.toString() +
" " + oggi.toString());
//stampa l'info sull'anno bisestile
if (oggibis)
video.println("Quest'anno e' bisestile");
else
video.println("Quest'anno non e' bisestile");
//inserimento di una data
video.println("Inserisci la tua data di nascita: ");
int giorno, mese, anno;
giorno = tastiera.readInt("Giorno: ");
mese = tastiera.readInt("Mese: ");
anno = tastiera.readInt("Anno: ");
//riga di separazione
video.println("");
//nuovo oggetto a cui viene assegnata la data inserita
Data nascita = new Data(giorno, mese, anno);
//calcolo del giorno di nascita
GiornoDellaSettimana nascitagiorno;
nascitagiorno = nascita.getGiornoDellaSettimana();
//tipo enumerativo per il calcolo del mese di nascita
MeseDellAnno mesenascita = nascita.getMeseDellAnno();
//calcola se l'anno di nascita era bisestile
boolean nascitabis;
nascitabis = nascita.isInAnnoBisestile();
//stampa la data di nascita
video.println("Data di nascita: " + nascitagiorno.toString() +
" " + nascita.getGiorno() + " " + mesenascita.toString() +
" " + nascita.getAnno());
//stampa che tipo di anno era
if (nascitabis)
video.println("Era un anno bisestile");
else
video.println("NON era un anno bisestile");
//linea di separazione
video.println("");
//stampa la data odierna
video.println("Data odierna: " + oggigiorno.toString() +
" " + oggi.toString());
//linea di separazione
video.println("");
//variabile e oggetto che stabiliscono i giorni vissuti
int giornifa;
giornifa = nascita.quantoManca(oggi);
//stampa il risultato
video.println("Hai vissuto " + giornifa + " giorni.");
//calcola il tuo prossimo compleanno
//crea la classe compleanno
Data compleanno = new Data(giorno, mese, oggi.getAnno());
//calcola quanti giorni mancano
int mancagiorni;
mancagiorni = oggi.quantoManca(compleanno);
//nel caso il tuo compleanno fosse già passato in
//quest'anno, allora calcola il prossimo
if (mancagiorni < 0) {
compleanno = new Data(giorno, mese, (oggi.getAnno() + 1));
mancagiorni = oggi.quantoManca(compleanno);
}
//stampa il risultato
video.println("Al tuo prossimo compleanno mancano " + mancagiorni +
" giorni.");
//chiede un numero di giorni e calcola la data partendo dal compleanno
int traguardo = tastiera.readInt("Quanti giorni vuoi raggiungere? ");
Data datatraguardo = new Data((giorno + traguardo), mese, anno);
//stampa il giorno
video.println("");
video.println("Raggiungerai i " + traguardo + " giorni, il " +
datatraguardo.toString());
}
}