[Parte 4] Creare il proprio calendario (data/ora) biblioteca da zero utilizzando Java.


Parte 4 - Il mese prossimo

Nella Parte 3, abbiamo creato due metodi per ottenere l'ID di un determinato nome del mese del mese, e viceversa. Ci ritroviamo con due problemi: [1] stiamo aggiungendo manualmente 1 per il prossimo mese e questo può essere fastidioso e non molto facile da usare e [2] Io un errore ogni volta che cerco di ottenere il mese di dicembre, perché no attuare un "reset", risalente al gennaio.

In questa parte, si discuterà:




  • Rimozione del lavoro manuale
  • Risolvere il "IndexOutOfBoundsException"
  • L'implementazione di un "reset al gennaio" per qualsiasi viene dicembre
  • Utilizzando due metodi con funzioni specifiche per creare un altro metodo utile
  • Fare metodi che sono flessibili per diversi formati di data in futuro

Metodo Scopo nextMonth () Restituisce il mese successivo al mese Metodi e finalità.

Soluzioni

[Problema # 1]

Stiamo aggiungendo manualmente per il primo mese successivo al mese da allora.

[Soluzione]

Invece aggiungendo di manualmente 1 quando viene richiamato il metodo, possiamo creare un metodo per fare in modo che l'utente non vede come è fatto manualmente.

[Problema # 2]
Otteniamo un errore ogni volta che cerco di ottenere il mese di dicembre, perché non attuare un "reset", risalente al gennaio.

[Soluzione]

Abbiamo implementato un "reset", che sarà automaticamente una volta raggiunto il mese scorso Gennaio - Dicembre.

nextMonth String pubblico (dati String) { NextMonth String = ""; if (monthID (data)! = 12) { nextMonth = monthName (monthID (data) + 1); } altro nextMonth monthName = (1); NextMonth ritorno; }

Il mese prossimo

Nel codice di cui sopra, ho creato un metodo chiamato "nextMonth ()". Ha il parametro "date" e restituisce un valore di dati di tipo stringa. Come si può vedere, utilizzando i metodi "monthID ()" e "monthName ()" insieme. Non è più inserire manualmente un ID mese, e aggiungere 1 o utilizzare i metodi "monthID ()" e "MonthName ()" insieme per il prossimo mese. Il "nextMonth ()" metodo non funziona e tutto l'utente deve fare è passare una data per il metodo "nextMonth ()" e analizzare il valore delle "date" ottiene il mese, e tornare ciò che viene il prossimo mese.

Ho dichiarato una variabile stringa chiamata "nextMonth" e inizializzato con un valore vuoto. Il programma entra nella "se", in cui viene verificato se il mese ID della data indicata non è uguale a 12 o "DEC". Se questa condizione è soddisfatta, il valore di "nextMonth" è il nome del mese di ID più 1 mese dalla data indicata.

Esempio

Un esempio di seguito viene scritto mostrare l'ordine di ciò che accade nella riga di codice in cui la condizione è soddisfatta e viene calcolato come risultato. Le parti sottolineate in ogni fase è prima di eseguire, sotto è il risultato effettivo. E 'discusso sopra, in una linea di codice in cui ci sono metodi per un metodo, la parte interna viene eseguito per primo.

Useremo la data "03-AUG-2013" come esempio di "date" nel metodo di passato "nextMonth ()".

Codice (sottolineato): nextMonth = monthName (monthID (data) + 1);
Valore reale (Risultato): Data = "03-ago-2013"

Codice (sottolineato): nextMonth = monthName (monthID (data) + 1);
Valore reale (Risultato): monthID ("August") = 8

Codice (sottolineato): nextMonth = monthName (monthID (data) + 1);
Valore reale (Risultato): 8 + 1 = 9

Codice (sottolineato): nextMonth = monthName (monthID (data) + 1);
Valore reale (Risultato): monthName (9) = "SEP"

Codice (sottolineato): nextMonth = monthName (monthID (data) + 1);
Valore reale (Risultato): nextMonth = "SEP"

Vediamo se il nostro modo di interpretare il codice è corretto e cercare di eseguire il programma in cui il valore di "data" è "03-AUG-2013".

Classe Sample

System.out.println ("Accanto a" + myCalendar.getMonth (data) + "è" + myCalendar.nextMonth ("03-ago-2013"));

Ulteriore Spiegazione

Dal momento che l'identificazione del mese "Agosto" è 8 invece di 12, il "se" condizione era soddisfatta e, come previsto, il valore di ritorno è stato "SEP".

Tutte le altre condizioni non menzionate in ogni "sì" o "else if" andare in "qualcosa d'altro". Dal momento che abbiamo un unico "sì", vale a dire, se i mesi di ID non è o uguale a 12 se il mese di non è "DEC", si può semplicemente andare altrove per "l'altro", cioè se i mesi di ID questo è o uguale a 12 se il mese di questo è "DEC".

altro nextMonth monthName = (1);

Nel codice precedente, se l'ID è di 12 mesi o un mese è dicembre, la variabile data di "nextMonth" ha il valore "monthName (1)" o "Gen". Questo è il soft reset. Ci sono solo dodici mesi in un anno, non c'è davvero il prossimo mese di dicembre, il mese successivo è solo il primo di gennaio del prossimo anno.

Perché ho usato il mese ID invece del nome del mese?

Perché non mettere se il mese è dato "DEC" o nextMonth = "ENE"?


Perché questo?

if (monthID (data)! = 12) {
nextMonth = monthName (monthID (data) + 1);
}
altro
nextMonth monthName = (Uno);

Perché non questo?

if (! MonthName (data) .equals ("Dicembre ")) {
nextMonth = monthName (monthID (data) + 1);
}
altro
nextMonth = "ENE ";

Ho detto nella Parte 1 del presente articolo, che per primo ha utilizzato il formato "DD-MON-YYYY" per tutte le date e creare diversi formati in seguito. Se metto "DEC" o il nome del mese, il codice genererà automaticamente un errore per tutti gli altri formati in cui il nome del mese è "DEC". Utilizzando il mese di identificazione è più flessibile perché ogni mese ha un identificatore univoco, indipendentemente dal formato. Pertanto, abbiamo bisogno di ricominciare tutto da capo, o modificare il nostro codice ogni volta che aggiungiamo un nuovo formato.

Suppongo che avete scritto il codice sottostante per classe MyCalendar o aggiunto il codice per la "nextMonth ()" metodo per il nostro codice precedente.

MyCalendar

nextMonth String pubblico (dati String) { NextMonth String = ""; if (monthID (data)! = 12) { nextMonth = monthName (monthID (data) + 1); } altro nextMonth monthName = (1); NextMonth ritorno; }

SampleClass

Qui sono alcuni esempi sono presentati per testare i risultati del "nextMonth ()" metodo.

{Public class SampleClass Main (string [] args) {static void pubblico MyCalendar MyCalendar MyCalendar = new (); System.out.println ("Accanto a" + "ENE" + "è" + myCalendar.nextMonth ("01-JAN-2016")); System.out.println ("Accanto a"Febbraio" + + "è" + myCalendar.nextMonth ("26-FEB-1991")); System.out.println ("Accanto a" + "MAR" + "è" + myCalendar.nextMonth ("03-MAR-2013")); System.out.println ("Accanto a" + "aprile" + "è" + myCalendar.nextMonth ("08-Apr-1868")); System.out.println ("Accanto a" + "MAGGIO" + "è" + myCalendar.nextMonth ("11-MAG-2001")); System.out.println ("Accanto a" + "June" + "è" + myCalendar.nextMonth ("21-giugno-2011")); System.out.println ("Accanto a" + "Julio" + "è" + myCalendar.nextMonth ("15 luglio 1998")); System.out.println ("Accanto a"Agosto" + + "è" + myCalendar.nextMonth ("03-ago-2013")); System.out.println ("Accanto a" + "SEP" + "è" + myCalendar.nextMonth ("30-set-2005 ')); System.out.println ("Accanto a" + "Ottobre" + "è" + myCalendar.nextMonth ("27-Ottobre-1984")); System.out.println ("Accanto a" + "Novembre" + "è" + myCalendar.nextMonth ("06-NOV-2003")); System.out.println ("Accanto a" + "DEC" + "è" + myCalendar.nextMonth ("04-Dec-1879")); } }

Il metodo è in grado di restituire il seguente mese di Gennaio a dicembre e non soddisfa il "IndexOutOfBoundsException" come abbiamo fatto nel codice precedente, a causa del "reset" si sono aggiunti al codice.

Nota importante:

I codici di cui sopra sono utilizzati solo come un riassunto di quello che abbiamo discusso in parte 4. È necessario assicurarsi che i metodi abbiamo creato nelle parti precedenti si aggiunge a MyCalendar classe se si verificano errori in alcuni metodi non esistono nella classe .

Fine della parte 4

Abbiamo creato un nuovo metodo in cui due diversi metodi sono stati utilizzati scopi molto specifici - "monthName ()" e "monthID ()". Abbiamo risolto il "IndexOutOfBoundsException" ci siamo incontrati e non ci aggiungiamo manualmente 1 per ottenere il mese successivo.

Tuttavia, il nostro viaggio da dicembre a gennaio non è ancora perfetto. L'unico scopo di "nextMonth ()" è, naturalmente, per il mese successivo. Questo può creare confusione, se, per esempio, cercare di ottenere il mese prossimo dopo "dicembre 2014", dovrebbe dare i "Gennaio 2015" risultati.

Nella prossima parte, creeremo un metodo per il prossimo anno e visto che siamo in, creeremo un metodo per arrivare il giorno successivo anche.

Si rammarica

Mi scuso per non aver articoli pubblicati per un tempo abbastanza lungo. Ho sofferto di intossicazione alimentare quando siamo andati in vacanza e sono rimasto bloccato a letto per una settimana. Dovevo finire un sacco di lavoro, perché ho programmato le mie dimissioni da molto tempo fa. Ho passato la deroga solo questo gennaio al blog a tempo pieno e fare le altre cose che voglio fare. Se qualcuno sta seguendo questo hub o leggere questo in futuro e tenendo conto della differenza tra le date, mi dispiace.

Grazie!

(0)
(0)

Commenti - 0

Non ci sono commenti

Aggiungi un commento

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Caratteri rimanenti: 3000
captcha