|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jan 2008
Messaggi: 4
|
[Java]Calcolo delle date;
Ciao ragazzi! devo fare una agenda e cercare di fare in modo che possa fissare degli appuntamenti,per fissare l'appuntamento devo dare da tastiere anno mese giorno minuti ore e secondi.
però devo controllare che la posizione nel tempo sia successiva all'istante attuale E che la data prescelta per l'appuntamento sia corretta,per esempio nn posso fissare un appuntamento per il 29 febbraio 2009 ma per il 29 febbraio 2012si.ho creato 2 classi,la prima funziona egregiamente e prende il tempo dal locale,la seconda è fatta da 6 metodi e dovrebbero fare in modo che controllino i parametri passati e modifichino cosi gli attributi. di questi 6 metodi solo l'ultimo(secondi) ha anche il controllo della posteriorità nel tempo rispetto all'istante attuale,però sembra non funzionare. copio e incollo qui le 3 classi,iltempi,ladata e bisestile che mi controlla se l'anno è bisestile. import java.util.*; ------------------------------------------------------------------- public class ILTEMPO{ int anno; int mese; int giorno; int ore; int minuti; int secondi; public void tempo(){ Calendar calendario = new GregorianCalendar(); giorno = calendario.get(Calendar.DAY_OF_MONTH); mese = calendario.get(Calendar.MONTH); anno = calendario.get(Calendar.YEAR); ore = calendario.get(Calendar.HOUR); minuti = calendario.get(Calendar.MINUTE); secondi = calendario.get(Calendar.SECOND); } public void cheoresono(){ System.out.println("Sono le : " + ore + ":" + minuti + ":" + secondi + " " + " Data "+ giorno +":" + (mese+1) +":" + anno); } } ------------------------------------------------------------------------- /*Scrivere un programma che,dato il numero AA rappresentante un anno,verifichi se questo è bisestile.*/ /*L’anno bisestile è l’anno durante il quale viene aggiunto un giorno extra nel mese di Febbraio. L’anno bisestile è ogni anno che sia divisibile per 400 o divisibile per 4 ma non divisibile per 100. Ad esempio, l’anno 1996 è un anno bisestile in quanto divisibile per 4 ma non divisibile per 100. Il 1700, il 1800, il 1900 non sono bisestili, mentre il 1600 e il 2000 sono anni bisestili in quanto divisibili per 400.*/ public class Bisestile { public static boolean bisestile(int anno){ boolean b=false; if(anno%400==0){System.out.print(anno+"-----> L'anno è bisestile"); b=true; } else if(((anno%4)==0)&((anno%100)!=0)) {System.out.print(anno+"-----> L'anno è bisestile"); b=true; } else if(((anno%4)==0)&((anno%100)==0)) {System.out.print(anno+"-----> L'anno non è bisestile"); b=false; } return b; } } -------------------------------------------------------------------------- public class ladata { /*private String gennaio=new String("gennaio"); private String febbraio=new String("febbraio"); private String marzo=new String("marzo"); private String aprile=new String("aprile"); private String maggio=new String("maggio"); private String giugno=new String("giugno"); private String luglio=new String("luglio"); private String agosto=new String("agosto"); private String settembre=new String("settembre"); private String ottobre=new String("ottobre"); private String novembre=new String("novembre"); private String dicembre=new String("dicembre");*/ private int anno; private int mese; private int giorno; private int ore; private int minuti; private int secondi; public void anno(){ int a; do{ System.out.println("Inserisci l'anno"); Numero n=new Numero(); a=n.leggiNumero(); } while(!(2007<a&&a<2100)); anno=a; } public void mese(){ int a; do{ System.out.println("Inserisci il mese:da 1(gennaio) a 12 (dicembre)"); Numero n=new Numero(); a=n.leggiNumero(); } while(!(0<a&&a<13)); mese=a; } public void giorno(){ int a; System.out.println("Inserisci il giorno:da 1 a 31 massimo"); if(mese==1){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<32));giorno=a;} if(mese==2&&Bisestile.bisestile(anno)){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<30));giorno=a;} if(mese==2&&!(Bisestile.bisestile(anno))){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<29));giorno=a;} if(mese==3){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<32));giorno=a;} if(mese==4){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<31));giorno=a;} if(mese==5){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<32));giorno=a;} if(mese==6){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<31));giorno=a;} if(mese==7){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<32));giorno=a;} if(mese==8){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<32));giorno=a;} if(mese==9){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<31));giorno=a;} if(mese==10){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<32));giorno=a;} if(mese==11){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<31));giorno=a;} if(mese==12){do{Numero n=new Numero(); a=n.leggiNumero();}while(!(0<a&&a<32));giorno=a;} } public void ore(){ int a; do{ System.out.println("Inserisci l'ora,dalle 0 alle 23"); Numero n=new Numero(); a=n.leggiNumero(); } while(!(0<=a&&a<24)); ore=a; } public void minuti(){ int a; do{ System.out.println("Inserisci il minuto ,dalle 0 alle 59"); Numero n=new Numero(); a=n.leggiNumero(); } while(!(0<=a&&a<60)); minuti=a; } public void secondi(){ int a; ILTEMPO iltempo=new ILTEMPO(); iltempo.tempo(); if(iltempo.anno<=this.anno){if(iltempo.mese<=this.mese){if(iltempo.giorno<=this.giorno){if(iltempo.ore<=this.ore){if(iltempo.minuti<=this.minuti){if(iltempo.secondi<=this.secondi){ do{ System.out.println("Inserisci i secondi,da 1 a 59"); Numero n=new Numero(); a=n.leggiNumero(); } while(!(0<=a&&a<60)); secondi=a; }else secondi();}else secondi();}else secondi();}else secondi();}else secondi();}else secondi(); } } |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Usa il tag code per postare il codice, in questo modo mantieni l'indentazione ed è tutto più leggibile.
Ho dato giusto un'occhiata, il codice mi sembra un po' troppo confusionario, oltretutto non c'è neanche un commento. Penso che tu abbia complicato le cose, prova a guardare questo metodo: Calendar - after |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:04.



















