 | |
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum |
[PROGETTO]Log Clicca QUI per vedere il messaggio nel forum |
supernova |
Raga sono bloccato alla classe event. il mio problema è il seguente : il metodo della data!!!!!!!!
io faccio così :
public Data (String s) {
String y;
y = s;
} |
foolish |
Originally posted by supernova
Raga sono bloccato alla classe event. il mio problema è il seguente : il metodo della data!!!!!!!!
io faccio così :
public Data (String s) {
String y;
y = s;
}
leggiti la documentazione API
cerca in java.util.Date i metodi relativi alla creazione e gestione della data.
questa è forse la parte più sbattimento della classe Event.. quindi il mio consiglio è di pensarci bene prima di metterci le mani. Usa comunque lo StringTokenizer per ottenere i valori necessari e FONDAMENTALI per ottenere la data.
si intende ovviamente gg mm aaaa hh mm ss ok?!
ricorda API rulez! |
Voodoo |
Ciao a todos. Cerco delucidazio sulle classi WebEvent e ClientEvent: poichè i loro costruttori prendono anche le variabili d'istanza della superclasse Event,quest'ultime vanno ridefinite lo stesso nelle sottoclassi o vanno richiamate in qualche maniera?? E se si qual'è codesta maniera??2)E' un problema tutto mio o è problematica la trattazione dell'URL, avendo una parte fissa "http://" e un'altra stringa da spezzettare tramite i punti...??
Come avete risolto il tutto??
Grazie per il tempo concessomi,sempre che qualche anima pia decida di concedermelo!!! |
Armen |
..vanno richiamate...
La prima riga del costruttore deve essere qualcosa tipo:
Super (s)
OK?!?!? |
citrus |
Originally posted by Armen
..vanno richiamate...
La prima riga del costruttore deve essere qualcosa tipo:
Super (s)
OK?!?!?
ho fatto così anch'io, ho passato la stringa con le 5 occorrenze alla superclasse Event, che tanto tratta le prime tre e non si caga le ultime 2, quete ultime invece vanno gestite direttamente dalla sottoclasse.... |
Armen |
...e quindi ho tolto il controllo che impediva alla classe Event di usare Stringhe formate da un numero di Token diverso da tre... |
citrus |
credo sia l'unica soluzione perchè altrimenti dovresti tagliare in due la stringa e mandare la prima parte alla superclasse e gestire la seconda in locale...
però a pensarci bene anche questa non è possibile perchè la chiamata del costruttore della superclasse deve essere la prima istruzione da scriversi quindi..... |
m@cCo |
Per favore aiutatemi con ste maledette eccezioni.
Allora parlando della classe IP, serve un'eccezione che venga lanciata quando il controllo sul range dei numeri dell'indirizzo sia errato, cioè se inserisco 280.3.2.1 mi deve lanciare un'eccezione.
Io l'ho creata da capo dato che gli interi teoricamente possono contenere ben più di 255.
Il problema è che me la intercetta (il try-catch l'ho messo nel main) ma non mi stampa a video il messaggio di errore.
La classe si chiama IPException ed estende direttamente exception, che però ho notato non possiede alcun metodo toString.
Ho provato quindi a ridefinirlo in questo modo:
public String toString(){
s = msg;
}
dove msg è il messaggio passato quando viene lanciata l'eccezione che viene costruita tramite il costruttore super(msg).
Però se intercetto l'eccezione e dico di stampare il messaggio tramite il metodo toString non stampa nulla, però il programma termina quindil'eccezione è correttamente intercettata!
Cosa ho sbagliato?
Ciao |
ska_Gio |
fai il try..poi nel catch metti Ip non valido reinserire |
m@cCo |
Cioè tu dici di intercettare l'eccezione e poi di scrivere semplicemente una stringa di errore?
Altra domanda:
@citrus: scusa mi potresti dire quale eccezione hai esteso per creare la tua "InvalidDataException"?
Grazie
Ciao |
Armen |
...scusate, ma non dovrebbe essere...
public String toString(){
return msg;
} |
m@cCo |
Sì hai ragione, fatto sta che non funzia lo stesso.
Ciao |
Voodoo |
Ringrazio Citrus e Armen per i loro consigli sulle classi Event e sottoclassi....hanno dato i loro frutti! Forse però prima che questo "meraviglioso" progetto sia finito romperò le balle ancora e qualcuno e spero che quel qualcuno sia disponibile come i due sopra citati...
Hasta luego a todos-- |
citrus |
Originally posted by m@cCo
Cioè tu dici di intercettare l'eccezione e poi di scrivere semplicemente una stringa di errore?
Altra domanda:
@citrus: scusa mi potresti dire quale eccezione hai esteso per creare la tua "InvalidDataException"?
Grazie
Ciao
ho esteso direttamente la classe Exception
:D |
citrus |
Originally posted by m@cCo
Per favore aiutatemi con ste maledette eccezioni.
Allora parlando della classe IP, serve un'eccezione che venga lanciata quando il controllo sul range dei numeri dell'indirizzo sia errato, cioè se inserisco 280.3.2.1 mi deve lanciare un'eccezione.
Io l'ho creata da capo dato che gli interi teoricamente possono contenere ben più di 255.
Il problema è che me la intercetta (il try-catch l'ho messo nel main) ma non mi stampa a video il messaggio di errore.
La classe si chiama IPException ed estende direttamente exception, che però ho notato non possiede alcun metodo toString.
Ho provato quindi a ridefinirlo in questo modo:
public String toString(){
s = msg;
}
dove msg è il messaggio passato quando viene lanciata l'eccezione che viene costruita tramite il costruttore super(msg).
Però se intercetto l'eccezione e dico di stampare il messaggio tramite il metodo toString non stampa nulla, però il programma termina quindil'eccezione è correttamente intercettata!
Cosa ho sbagliato?
Ciao
non ti stampa nulla perchè tu la stringa msg la passi al costruttore della superclasse (Exception) la quale non ne fa nulla.
praticamente devi crearti un costruttore nella classe IpExcepion che raccoglie la stringa passata in argomento e la spara in un campo stringa che chiameremo per esempio msg.
poi ti scrivi il metodo toString che non fa altro che stampare a video la variabile msg. |
Rocco.Li |
Ho visto un po' di cagnara sul discorso date nella classe Event...
Io ho supposto che la stringa con data, ora sia in formato:
"dd/mm/yyyy hh:mm"
se non erro il formato date poteva essere cambiato a piacimento, l'importante era rappresentare una data e un ora.
Fatta questa supposizione si puo' usare la classe java.util.Date; senza usare metodi e costruttori "Deprecated" utilizzando un istanza della classe java.text.DateFormat quindi:
per interpretare una stringa:
Date miaData = DateFormat.getInstance().parse("22/12/2003 23.00");
Per stampare una data:
String miaStringa = DateFormat.getInstance().format(miaData);
Credete che la mncanza dei secondi possa essere un problema ?
Spero' di no !!! |
m@cCo |
Esattamente quello che ho fatto io.
Comunque per introdurre anche i secondi basta usare il costruttore con i parametri interi, e volendo è anche possibile usare un tipo di data diversa a seconda della nazione.
Es. per ottenere un oggetto date:
Date data;
data = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.LONG).parse("25-gen-2004 12.13.14");
dove DateFormat.MEDIUM e DateFormat.LONG specificano la lunghezza del campo data e ora.
Per formattare un oggetto data da stampare secondo il formato voluto:
String s = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.LONG).format(data);
E' poi possibile specificare un terzo campo per scegliere il tipo di data da usare.
Es. String s = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.LONG,Locale.ITALY).format(data);
formatta la data secondo il formato italiano.
Comunque per delucidazioni consultate la documentazione api, non è difficle come sembra.
@citrus: perfetto risolto tutto.
Senti ma tu le eccezioni le intercetti tutte nel main vero? E quelle che definisci tu devono essere tutte controllate ne?
Ciao |
Rocco.Li |
Le eccezzioni che definisci vanno per forza di cose controllate, la parola chiave "throws" nella definizione, di fatto ti obbliga ad inserire un metodo o un costruttore all'interno di un blocco "try/catch" quando viene richiamato. (eccezzion fatta quando richiami il costruttore di una super classe da una sottoclasse con la parola chiave super)
Io personalmente non controllo tutte le eccezzioni nel main, ma quelle sollevate dalle istanze di classi usate nel main, se queste classi sono il frutto di ereditarieta' o utilizzo di istanze di altre classi che generano eccezzioni , queste ultime vengono trattate nella specifica classe.
Difatto mettendo a frutto il meccanismo di "Exceptions Bubbling"
forse su alcuni libri se ne parla.... |
m@cCo |
Sì vabè ma nel main le devo intercettare no?
O posso farlo nei costruttori delle classi?
Ciao |
ska_Gio |
Come deprecated...??? Dove è scritto che nn si possono usare le deprecated??? |
foolish |
Originally posted by Rocco.Li
se non erro il formato date poteva essere cambiato a piacimento, l'importante era rappresentare una data e un ora.
Fatta questa supposizione si puo' usare la classe java.util.Date; senza usare metodi e costruttori "Deprecated" utilizzando un istanza della classe java.text.DateFormat quindi:
mi sa tanto che ti sbagli...
mi ricordi che il malchiodi aveva insistito sulla data: che potevamo usare tutti i metodi, le cose che volevamo, l'importante è che la data venisse memorizzata e visualizzata nel modo richiesto.
che ora non mi ricordo ma era quello con AM e PM.
è un pò sbattimento ma è possibilissimo! |
foolish |
Originally posted by m@cCo
Sì vabè ma nel main le devo intercettare no?
O posso farlo nei costruttori delle classi?
Ciao
nel progettino viene valutata l'architettura del programma, la sua funzionalità, l'identazione!
il tutto seguendo le regole del buon programmatore!
tralasciando le ultime due...
allora se al main non arriveranno eccezioni è un grosso errore:
perche se ad esempio si inserisce una data, ad esempio il 45/20/2004 70:5:93 CS
e l'eccezione non arriva per dire che è sbagliata non si può capire che è una data sbagliata in termini informatici. Alcune eccezioni devono essere catturate nei costruttori e nei metodi ma con criterio. |
Rocco.Li |
Caro Foolish, ti riporto uno stralcio del testo del progetto:
Attenzione! I formati per indicare date ed ore sono indicativi: è pertanto possibile fare riferimento ad altri tipi di formati, purchè questi siano adeguati a indicare in modo equivalente a quello richiesto una data e un'ora. Qualora si scelga di utilizzare un formato alternativo, il progetto dovrà essere sviluppato in modo coerente. Ovviamente in quest'ultimo caso il log di esempio descritto nel paragrafo precedente potrebbe non risultare utilizzabile.
Da quello che c'e' scritto qui si puo' !
Io alla presentazione il 14/01 non ero presente, se ha detto qualcosa di diverso non so'... |
foolish |
Originally posted by Rocco.Li
Caro Foolish, ti riporto uno stralcio del testo del progetto:
Attenzione! I formati per indicare date ed ore sono indicativi: è pertanto possibile fare riferimento ad altri tipi di formati, purchè questi siano adeguati a indicare in modo equivalente a quello richiesto una data e un'ora. Qualora si scelga di utilizzare un formato alternativo, il progetto dovrà essere sviluppato in modo coerente. Ovviamente in quest'ultimo caso il log di esempio descritto nel paragrafo precedente potrebbe non risultare utilizzabile.
Da quello che c'e' scritto qui si puo' !
Io alla presentazione il 14/01 non ero presente, se ha detto qualcosa di diverso non so'...
...|14/01/2004 10:12:07 AM|...
caro Rocco.Li
allora ci ha proposto questa data, è vero, ci ha anche detto di poterne usare altri formati nonchè classi.
allora ammetto con te che le schede siano equivoche in quanto riportano informazioni diverse...
guardiamo la pag 1 e 2 (istruzioni ed esempio formato ora) ALLORA in una parte dice di far seguire la data e l'ora dalla stringa AM e PM di cui tutti noi ne conosciamo la funzionalità, dall'altra parte (pag 2) non le mette nemmeno facendo apparire il modo descritto dal metodo toString() dell'istanza.
allora, il Malchiodi aveva però espressamente detto che l'ora doveva essere riportata sulle 12 ore quindi utilizzando l'am e pm proprio (simpatia) per complicarci un pò la vita.
poi, ovviamente, potete fare come vi pare, lasciate così se avete già fatto qualcosa! io vi ho solo detto quello che ha detto il Malchiodi alla presentazione. |
m@cCo |
Allora aspetta che faccio mente locale...
Le eccezioni che devo creare per il controllo del formato della stringa (ip corretto ecc) le lancio nei costruttori ma le intercetto nel main.
Mentre le eccezioni già definite in java posso anche intercettarle direttamente nei costruttori, ad esempio quando trasformo la stringa di un evento nei singoli campi se mi salta fuori una ParseException perchè la priorità sono delle lettere posso inserire un try-catch nel costruttore.
Però come facci poi a stampare il messaggio di errore?
Dovrei ritornarlo al main ma come?
Mi creo un metodo apposta? Non mi sembra il caso...
A parte il fatto che poi l'oggetto non viene creato e quindi nel main devo intercettare anche una NullPointerException.
Ciao |
foolish |
ecco, le eccezioni le catturi con il solito try e catch, per poi nel "campo" catch lanciare un'eccezione apposita.
io lancerei sempre la solita nell'ip sia se non sono 4 numei, sia se non sono compresi tra 0 e 255 sia se non sono proprio numeri interi o proprio non siano numeri: tanto non è un IP valido comunque. stessa cose per le altre istanze. |
m@cCo |
Quindi se ho capito bene tu dici di creare un'eccezione che dica Ip errato e basta, che poi lancio ogni volta che intercetto un'eccezione nel costruttore della classe ip giusto?
Ma per i campi particolari tipo decrizione devo creare dei controlli appositi, come quello della classe ip che controlla che siano 4 numeri compresi tra 0 e 255.
Cioè per esempio la data la controlla già lui e solleva automaticamente una ParseException quindi mi basta intercettarla e stampare l'errore, però per esempio nel campo descrizione devo controllare che l'identificatore CL o WE sia esatto perciò questa eccezione la lancio nel construttore ma la intercetto nel main giusto?
Ciao |
foolish |
esatto, oppure nella classe Log che è la più appropriata per certe eccezioni.
la log per i controlli generali. nel main per eccezioni che potrebbero scaturire da valori inseriti dall'utente. |
m@cCo |
Perfetto grazie mille, adesso vedo un pò cosa riesco a tirar fuori dal cilindro:D
Ciao |
citrus |
Originally posted by foolish
mi sa tanto che ti sbagli...
mi ricordi che il malchiodi aveva insistito sulla data: che potevamo usare tutti i metodi, le cose che volevamo, l'importante è che la data venisse memorizzata e visualizzata nel modo richiesto.
che ora non mi ricordo ma era quello con AM e PM.
è un pò sbattimento ma è possibilissimo!
anche qui secondo me c'è confusione...
prima si dice che la data debba essere espressa con l'ora nell'ordine di 12 (con AM o PM), poi, nella stringa di esempio che riporta è espressa con l'ora nell'odine di 24.
(22 Dec 2003 15:20:21 GMT!)
io non sapendo che fare ho usato quest'ultima e per ricostruire una data uso il costruttore Date(String s) che accetta, tra gli altri, anche questo tipo di formato.
.....
un altra cosa:
la data bisogna farla inserire espressamente dall'utente (difficilissimo che si azzecchi il formato giusto) oppure si inserisce automaticamente quella di sistema al momento della generazione dell'evento???
(io penso che valga quest'ultima ma se qualcuno la pensa diversamente posti!!!!) |
m@cCo |
Io la inserisco direttamente alla creazione dell'evento.
Scusate ma nel log, per riconoscere se l'evento letto dal file è di tipo Web o client cosa avete fatto?
io ho creato un metodo apposito che divide la stringa in token controllando le prime tre lettere del terzo token e ritorna true se è web e false in caso contrario.
Solo che quando leggo il file e prova a creare l'evento mi ritorna un'eccezione nullpointerexception, senza riuscire a crearlo...non è che avete idea del perchè?
Per leggere dal file ho usato Buffered reader e ad ogni linea sono andato a capo.
Le stringhe hanno il giusto formato.
Ciao |
Armen |
Secondo e sarebbe più sensato quello che dici tu (la data generata nel momento della crazione dell'evento), ma se ho ben capito dovrebbe essere inserita dall'utente... |
foolish |
Originally posted by citrus
anche qui secondo me c'è confusione...
prima si dice che la data debba essere espressa con l'ora nell'ordine di 12 (con AM o PM), poi, nella stringa di esempio che riporta è espressa con l'ora nell'odine di 24.
(22 Dec 2003 15:20:21 GMT!)
io non sapendo che fare ho usato quest'ultima e per ricostruire una data uso il costruttore Date(String s) che accetta, tra gli altri, anche questo tipo di formato.
il lato oscuro è il più semplice da intraprendere :D
ma sììììì, va bene tutto!
...alla fine sono sbattimenti in meno! anche se alla presentazione l'avevo visto preso bene dal fatto di renderci la vita difficile su ogni parte, e quella, bisogna ammetterlo, è proprio la più semplice.
Originally posted by citrus
un altra cosa:
la data bisogna farla inserire espressamente dall'utente (difficilissimo che si azzecchi il formato giusto) oppure si inserisce automaticamente quella di sistema al momento della generazione dell'evento???
io l'ho fatto in tutto e due i diversi modi! la logica mi dice di usare l'ora di sistema, la vocina del Malchiodi che mi dice "Sbattiti.." "lavora.." falla inserire dall'utente!
nel dubbio le faccio tutt'è due! non è poi tanto difficile, anzi! basta dire inserisci l'ora, i minuti, i secondi, i gg, i mm, l'aaaa. il tutto dentro un ciclo di do-while.
les jeux sont faits
alla fine sbattersi un pochino per il progetto mi sembra il minimo! |
foolish |
HO FINITO IL PROGETTINO
:banana: :ola: :banana:
oggi degeneriamo, socio di progetto???
:D |
ska_Gio |
:ola: :approved: :approved: :approved: |
gabry_deejay |
...uhmmm spero che adesso potete aiutare no? |
foolish |
sempre dato una mano quando sono al silab!
una sulla tastiera, ed una sulla birrozza del mercato comunale d'ora in avanti! |
ska_Gio |
Originally posted by foolish
una sulla birrozza del mercato comunale d'ora in avanti!
NO COMMENT |
gabry_deejay |
Originally posted by foolish
sempre dato una mano quando sono al silab!
una sulla tastiera, ed una sulla birrozza del mercato comunale d'ora in avanti!
non ho detto che non hai dato una mano.....:D
.....ahhhh il mercato comunale.....ah :birrozza: birrozza....... |
marlen |
visto che tu sai tutto e già hai finito, io sono indietro ho creato 5 classi devo finire quella log.
Ma per controllare se ci sono errori:
- in ogni classe fatta uso il metodo main E' GIUSTO
- se le eseguo mettendo private variabili d'istanza prima dei
costruttori mi da errore PERCHE'
- come si inizializza un costruttore con array ti mando il codice
sono in crisi aiuto. .. perchè non riesco ad eseguire ciao
MARLEN
ECCO IL CODICE DOVE SBAGLIO
// definisce la variabile d'istanze
int [] Numeric = new int [4];
// i costruttori
Ip (int [0]x,int[1] y,int[2] z,int[3] w){
int[0]Numeric=x;
int[1]Numeric=y;
int[2]Numeric=z;
int[3]Numeric=w; |
foolish |
Originally posted by marlen
visto che tu sai tutto e già hai finito, io sono indietro ho creato 5 classi devo finire quella log.
....
AVVERTENZA : NON postare del codice , usate i PM.
i prof leggono il forum e se scoprono un via vai di codici se la prenderebbero ammale!
:D |
ska_Gio |
Originally posted by marlen
visto che tu sai tutto e già hai finito, io sono indietro ho creato 5 classi devo finire quella log.
Ma per controllare se ci sono errori:
- in ogni classe fatta uso il metodo main E' GIUSTO
- se le eseguo mettendo private variabili d'istanza prima dei
costruttori mi da errore PERCHE'
- come si inizializza un costruttore con array ti mando il codice
sono in crisi aiuto. .. perchè non riesco ad eseguire ciao
Ma come hai fatto a fare 5 classi !!!
Il codice che hai postato + o - e uguale a quello della classe ip!!!
Cmq e' errato di brutto in particolare
int [0]x non e' una variabile |
m@cCo |
Ma sì alla fine stiamo tutti sulla stessa barca!
Vuol dire che collaboriamo dovrebbero essere contenti:D
Cmq piccola domanda.
Nella classe log per creare l'array di eventi devo conoscere il numero di righe del file di testo.
Ho provato ad usare una variabile contatore incrementandola in un ciclo while che legge tutto il file.
Poi perà quando nel metodo toString tento di accedere all'array di event mi da una NullPointerException.
L'array è dichiarato così: Event[] data;
E quindi inizializzato così: data = new Event[cnt];
Dove cnt è la variabile contatore.
Nel toString con un ciclo for da 0 a cnt sfoglio l'array ponendone il contenuto in una stringa che poi ritorno.
Ho provato a inizializzarlo direttemente al valore esatto di righe e così facendo funziona regolarmente.
La variabile cnt è dichiarata private all'inizio della classe quindi teoricamente dovrebbe essere accessibile in tutta la classe log no?
Sapreste mica dirmi come mai mi dà sto errore?
Ciao |
m@cCo |
Allora ho appurato che l'errore è nel ciclo while che conta tutte le righe del file...ma non capisco perchè!!!
non faccio altro che leggere una linea e metterla in una stringa finchè questa non è null, il che vuol dire che il file è finito.
Punto, e ad ogni lettura incremento la variabile cnt...
Ciao |
m@cCo |
Ok capito...non avevo chiuso lo stream di lettura...
Ciao |
httpmum |
Ciao Foolish visto che hai finito tutto posso chiederti una cosa per quanto riguarda il metodo void reload( ) della classe Log????
La definizione è: metodo che ricarica dal file i contenuti del log nell'oggetto!!!
Io l'ho fatto uguale al costruttore della classe, però non sono sicuro che sia giusto...puoi darmi una dritta???!!!
Grazie MIlle... |
ska_Gio |
Originally posted by httpmum
Ciao Foolish visto che hai finito tutto posso chiederti una cosa per quanto riguarda il metodo void reload( ) della classe Log????
La definizione è: metodo che ricarica dal file i contenuti del log nell'oggetto!!!
Io l'ho fatto uguale al costruttore della classe, però non sono sicuro che sia giusto...puoi darmi una dritta???!!!
Grazie MIlle...
Sicuramente se ti funziona è giusto solo penso ci siano metodi più eleganti per farlo....ma nn penso che ciò conti sulla valutazione...
CMQ è esatto dentro a reload ci va la stessa roba del costruttore! |
francyghisla |
Nella classe MainLoop, cosa si intende per creazione di un nuovo Log?
Hp 1:si apre il file indicato e si caricano le notizie presenti in un oggetto Log
Hp 2:si crea un nuovo file e un oggetto Log completamente nuovo
se avete altre ipotesi più valide fatemi sapere! |
francyghisla |
altro dubbio:
le eccezioni FileNotFoundException e IOException le gestite nel main o direttamente nella classe Log? |
citrus |
Originally posted by m@cCo
Esattamente quello che ho fatto io.
Comunque per introdurre anche i secondi basta usare il costruttore con i parametri interi, e volendo è anche possibile usare un tipo di data diversa a seconda della nazione.
Es. per ottenere un oggetto date:
Date data;
data = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.LONG).parse("25-gen-2004 12.13.14");
dove DateFormat.MEDIUM e DateFormat.LONG specificano la lunghezza del campo data e ora.
Per formattare un oggetto data da stampare secondo il formato voluto:
String s = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.LONG).format(data);
E' poi possibile specificare un terzo campo per scegliere il tipo di data da usare.
Es. String s = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.LONG,Locale.ITALY).format(data);
formatta la data secondo il formato italiano.
Comunque per delucidazioni consultate la documentazione api, non è difficle come sembra.
@citrus: perfetto risolto tutto.
Senti ma tu le eccezioni le intercetti tutte nel main vero? E quelle che definisci tu devono essere tutte controllate ne?
Ciao
mannaggia ste date!
non mi quadra di usare la data riportata sul file (quella GMT) quindi vorrei trovare un formato più simile a quello proposto
(gg/mm/aaaa hh:mm:ss AM).
il problema è che le classi che avete giustamente consigliato non gestiscono il discorso AM/PM.
sono sicuro che c'è il metodo giusto tra i mille elencati nelle API, basta trovarlo!
chiunque ne sappia di più posti (io farò altrettanto appena avrò trovato qualcosa di interessante).
grazie
citrus |
FedeLura |
void trim(double): metodo che mantiene solo la percentuale di eventi più recenti del log contenuta nell’argomento (che deve quindi contenere un numero tra zero e uno, emettendo un’eccezione in caso contrario). Gli eventi rimanenti devono essere eliminati, dopodichè il log deve essere scritto sul relativo file
Scusate, sarò io dé coccio, ma proprio non capisco questo metodo:
-Qual è l'argomento richiesto dal metodo?
-Soprattutto, in base all'argomento, cosa deve ritornare il metodo?
:pensa: |
citrus |
Originally posted by FedeLura
Scusate, sarò io dé coccio, ma proprio non capisco questo metodo:
-Qual è l'argomento richiesto dal metodo?
-Soprattutto, in base all'argomento, cosa deve ritornare il metodo?
:pensa:
il metodo non ritorna nulla (public static void trim(double))
perchè lavora sull'array data che è già un campo dell'oggetto Log.
l'argomento richiesto è un double con un range che va da 0 a 1.
in questo modo per intenderci 0.5 corrisponde al 50% (e 1 ovviamente al 100%)!
tu non devi far altro che ridimensionare l'array in base alla percentuale passata in argomento facendo attenzione a tagliare la parte contenente gli eventi meno recenti. |
httpmum |
Io non ho capito molt bene come faccio a fare queste eccezioni, o meglio non ho capito come faccio a far continuare il programma dopo il verificarsi di un'eccezione!!!!!
Qualcuno può aiutarmi.....(magari postandomi qualche esempio di codice!!!!)
Grazie Mille..... |
Odeen |
grazie mille citrus
Odeen |
citrus |
Originally posted by httpmum
Io non ho capito molt bene come faccio a fare queste eccezioni, o meglio non ho capito come faccio a far continuare il programma dopo il verificarsi di un'eccezione!!!!!
Qualcuno può aiutarmi.....(magari postandomi qualche esempio di codice!!!!)
Grazie Mille.....
se tu la raccogli il programma riprende automaticamente un passo prima dal punto in cui si è verificata l'eccezione,
altrimenti l'eccezione viene "buttata" in output dalla javavirtualmachine e l'esecuzione del programma si interrompe bruscamente!!!! |
FedeLura |
Originally posted by citrus
il metodo non ritorna nulla (public static void trim(double))
perchè lavora sull'array data che è già un campo dell'oggetto Log.
l'argomento richiesto è un double con un range che va da 0 a 1.
in questo modo per intenderci 0.5 corrisponde al 50% (e 1 ovviamente al 100%)!
tu non devi far altro che ridimensionare l'array in base alla percentuale passata in argomento facendo attenzione a tagliare la parte contenente gli eventi meno recenti.
Ah ecco! Allora nn porta via molto tempo! Vai raga che ci sono!Thanx di nuovo, Citrus!
@ httpmum:
-x creare una nuova eccezione devi creare una classe che si chiama come l'eccezione stessa e che estenda Exception;
-x gestire le eccezioni devi utilizzare i comandi
try{
...codice che può generare l'eccezione...
} catch (NomeEccezione e) {
...codice che deve essere eseguito nel caso si verifichi l'eccezione catturata in catch...
}
Spero di essere stato chiaro! :D |
FedeLura |
Azz... Citrus mi hai anticipato e nn me ne sn accorto! Scusate... |
gabry_deejay |
io non ho capito una mazza di come cavolo si fa il MainLoop......perfavore.....se qualcuno ha finito...o se magari qualcuno ha un anima pia da spiegarmi con molta chiarezza che C***O devo combinare in STA C***O di classe (Scusate i termini)..........:D
mi mandi un PM o .....grazie per la gentile collaborazione......:cry:
Edit di moderazione: Evitiamo magari la volgarità così gratuita ;) |
foolish |
Originally posted by citrus
mannaggia ste date!
non mi quadra di usare la data riportata sul file (quella GMT) quindi vorrei trovare un formato più simile a quello proposto
(gg/mm/aaaa hh:mm:ss AM).
il problema è che le classi che avete giustamente consigliato non gestiscono il discorso AM/PM.
sono sicuro che c'è il metodo giusto tra i mille elencati nelle API, basta trovarlo!
chiunque ne sappia di più posti (io farò altrettanto appena avrò trovato qualcosa di interessante).
grazie
citrus
ho cercato più volte il discorso della fascia oraria (AM,PM) ma alla fine ho usato semplicemente la logica.
faccio un controllo per vedere che làora passata come argomento sia compresa tra 0 e 11, ora conrtrollo che ci sia AM e PM scritto nel giusto modo (se ad esempio c'è MX genererò l'eccezione) quindi se c'è AM lascio la data così com'è, altrimenti gli sommo 12.
- la fascia oraria è AM ?
- si - lascio così le ore
- no - sommo 12 alle ore
- ora imposto la data!
semplice veloce ed indolore! |
foolish |
Originally posted by gabry_deejay
io non ho capito una mazza di come cavolo si fa il MainLoop......perfavore.....se qualcuno ha finito...o se magari qualcuno ha un anima pia da spiegarmi con molta chiarezza che C***O devo combinare in STA C***O di classe (Scusate i termini)..........:D
mi mandi un PM o .....grazie per la gentile collaborazione......:cry:
Edit di moderazione: Evitiamo magari la volgarità così gratuita ;)
fai innanzi tutto un menù incui elenchi le possibilità.
otterrai una scelta (numerica) ora fai uno switch
in cui gestirai ogni singola opzione.
farai ripetere il tutto finchè non sceglierai l'uscita.
code:
do
{
switch(scelta)
{
case 1: ... break;
case 2: ... break;
....
}//fine switch
}while(scelta!=0);
//presupponendo che l'inserimento di uno 0 equivalga all'uscita
dentro ogni "case" utilizzerai i metodi che avrai implementato nella classe Log. |
citrus |
Originally posted by foolish
ho cercato più volte il discorso della fascia oraria (AM,PM) ma alla fine ho usato semplicemente la logica.
faccio un controllo per vedere che làora passata come argomento sia compresa tra 0 e 11, ora conrtrollo che ci sia AM e PM scritto nel giusto modo (se ad esempio c'è MX genererò l'eccezione) quindi se c'è AM lascio la data così com'è, altrimenti gli sommo 12.
- la fascia oraria è AM ?
- si - lascio così le ore
- no - sommo 12 alle ore
- ora imposto la data!
semplice veloce ed indolore!
ho trovato una classe spettacolare che mi permette di formattare le date!!!
è una sottoclasse della FormatDate, si chiama SimpleFormatDate ed essendo concreta può essere istanziata passandogli in argomento un pattern, ovvero una stringa che rappresenti il formato di data desiderato.
la figata è che i pattern sono completamente personalizzabili!
(questo quindi mi permette di creare la data esattamente come la voglio io!).
ex:
String pattern = "dd/mm/yyyy HH:mm:ss aa";
SimpleDateFormat f = new SimpleDateFormat(pattern);
Date data=f.parse("22/12/2003 03:15:22 PM");
questo mi permette di raccogliere la data!
....
ora l'unica cos che mi rimane da capire è come ritrasformarla per l'output nel formato di partenza....
se qualcuno ha consigli sono bene accetti!
:D |
foolish |
ottima cosa, funziona davvero???
io ho usato i metodi get.... ecc! questo è un pò lunghino ma funziona benissimo.
ti sei scorso tutta la documentaziona API??? |
citrus |
Originally posted by foolish
ottima cosa, funziona davvero???
io ho usato i metodi get.... ecc! questo è un pò lunghino ma funziona benissimo.
ti sei scorso tutta la documentaziona API???
API RULEZ!!!! :D
(no scherzo, me l'hanno consigliata gli amici di html.it!)
poi ovviamente api alla mano ho cercato di capirci qualcosa,
ora mi manca solo di trovare il modo per ritrasformare la data in stringa secondo il pattern che ho stabilito...... |
gabry_deejay |
ora ci provo foolish.....se non viene ti posso picchiare? :lol:
Per ora grazie!
Citrus...ma tu in Silab? non ti potrò mai conoscere cazzarolina! |
francyghisla |
tutto il problema delle date nasce dal fatto che usiamo l'esempio di Log che ci ha dato Malchiodi, però alla presentazione del progetto ci aveva lasciato libera scelta nella decisione del formato della data, quindi se decidiamo per esempio di usare la codifica GMT e la utilizziamo dall'inizio alla fine del progetto non dovrebbero esserci problemi, no?
in teoria i Log sono gestiti da un solo programma (il mio, il tuo, il suo...) senza intercambiabilità, quindi non ci sono problemi di portabilità delle date. Un Log che scrivo con il mio programma è letto solo dal mio programma, giusto? (lo so che è contro ogni regola di buona programmmazione, ma in questo caso specifico dovrebbe essere così) |
citrus |
Originally posted by francyghisla
tutto il problema delle date nasce dal fatto che usiamo l'esempio di Log che ci ha dato Malchiodi, però alla presentazione del progetto ci aveva lasciato libera scelta nella decisione del formato della data, quindi se decidiamo per esempio di usare la codifica GMT e la utilizziamo dall'inizio alla fine del progetto non dovrebbero esserci problemi, no?
in teoria i Log sono gestiti da un solo programma (il mio, il tuo, il suo...) senza intercambiabilità, quindi non ci sono problemi di portabilità delle date. Un Log che scrivo con il mio programma è letto solo dal mio programma, giusto? (lo so che è contro ogni regola di buona programmmazione, ma in questo caso specifico dovrebbe essere così)
l'esempio che riporta sul testo dell'esercizio secondo me non è molto attendibile anche perchè poi richiede espressamente il formato con l'orario espresso con am/pm ed anche il file log messo a disposizione riporta questo formato.....
(poi ovviamente lui dice anche di fare come preferiamo però penso che alla fine apprezzi il fatto che vengano seguite le sue direttive)
...
invece per quanto rigurada la portabilità non c'è niente di meglio della classe di cui ho postato sopra: basta infatti che ti crei un campo "pattern" ed un metodo statico che lo modifica e tutte le date si aggiorneranno automaticamente al nuovo formato!!!
(tranne ovviamente quelle già scritte su file però per quelle si può sempre fare una conversione) |
citrus |
Originally posted by gabry_deejay
Citrus...ma tu in Silab? non ti potrò mai conoscere cazzarolina!
il Silab per me è un po' uno sbattimento...
comunque non ci siamo presentati ma mi sa che ci conosciamo, almeno di vista.....
:D |
ska_Gio |
mi sa di si visto che di solito citrus a lezione è sempre vicino a me foolish e ninjanet84.... |
gabry_deejay |
sta di fatto che cmq la classe LOG non c'è venuta....come devo fare? soprattutto le ultime tre cose....TRIM (date) e le altre due.....:( |
m@cCo |
Finito!!! Dopo tutto lo sbattimento e tutte le eccezioni che ci ho buttato dentro se non prendo 35 faccio una strage!!! :twisted:
Ah piccola domanda ma per "Creazione di un nuovo log" che caspio intende Malchiodi?
Teoricamente per fare qualsiasi cosa serve il log per cui a che mi serve un'opzione che me lo crea?
Io se il file da leggere non lo trovo lo creo e poi creo automaticamente il log.
Poi se scegli crea log lo sovrascrive ma non capisco a che cosa serva...
Ciao |
ska_Gio |
ALLORA TRIM...CANCELLA LE ULTIME RIGHE DEL LOG che vengono dopo una certa data va fatto un confronto tra una data imessa e le date degli eventi del log....quando viene trovata una data del log antecedente a quella immessa va eliminata ...
...supponendo che il log sia ordinato... puoi anche dire che se trovi un evento che va eliminto tutti quelli sottostanti vanno eliminati....in quanto vengono dopo! |
ska_Gio |
Verifica della consistenza temporale del log
Vengono verificate le date degli eventi, se esse sono in ordine decrescente viene
segnalato che la consistenza temporale e' corretta
controlli ogni data dell'evento 1 con l'evento 2 se 1 viene dopo a 2 ok continui il ciclo (controlli l'elemento 2 col 3) altrimenti dai false.....continui così per tutti gli elementi dell'array |
citrus |
Originally posted by m@cCo
Finito!!! Dopo tutto lo sbattimento e tutte le eccezioni che ci ho buttato dentro se non prendo 35 faccio una strage!!! :twisted:
Ah piccola domanda ma per "Creazione di un nuovo log" che caspio intende Malchiodi?
Teoricamente per fare qualsiasi cosa serve il log per cui a che mi serve un'opzione che me lo crea?
Io se il file da leggere non lo trovo lo creo e poi creo automaticamente il log.
Poi se scegli crea log lo sovrascrive ma non capisco a che cosa serva...
Ciao
sono daccordo!
praticamente la creazione del log la metto all'inizio del main, al di fuori dello switch di modo che obbligo l'utente a creare un nuovo log appena lancia il programma, anche perchè se questo mi richiama un metodo Salva senza aver prima creato il log mi va tutto a pallino!!! |
Mifune |
Ragazzi ma voi a quanto avete inizializzato l'array di data? Io ho supposto al momento una dimensione di 100 eventi.... |
citrus |
Originally posted by Mifune
Ragazzi ma voi a quanto avete inizializzato l'array di data? Io ho supposto al momento una dimensione di 100 eventi....
purtroppo la cosa migliore da fare in questo caso è scorrere una prima volta il file e contarne le righe incrementando un contatore.
successivamente istanzi un'array della dimensione del contatore e rileggi ancora il file per riempire l'array.
...
il problema è che così ti tocca leggere due volte da file il che no è molto indicato in termini di prestazioni...
la cosa migliore sarebbe caricare il file in memoria (ex con uno stack) e poi lavorarci da qui! |
m@cCo |
Io ho creato un metodo che ritorna il numero di eventi del file e inizializzo l'array a quel valore
Se il file è vuoto la variabile resta a 0;
Quando aggiungo un evento creo un array di appoggio di dimensione +1 rispetto a quella del file, e dopo aver aggiunto il nuovo evento reinizializzo l'array data alla nuova dimensione ricopiandoci tutto quello che c'è nell'array di appoggio.
Ciao |
citrus |
Originally posted by m@cCo
Io ho creato un metodo che ritorna il numero di eventi del file e inizializzo l'array a quel valore
Se il file è vuoto la variabile resta a 0;
...
questo metodo però deve per forza leggere da file giusto?
quindi siamo al punto di partenza...
:D |
m@cCo |
Oh certamente, ma coi computeroni che ci ritroviamo me ne sbatto altamente e lo leggo due volte:D
Ciao |
citrus |
Originally posted by m@cCo
Oh certamente, ma coi computeroni che ci ritroviamo me ne sbatto altamente e lo leggo due volte:D
Ciao
anastro! :approved: |
m@cCo |
anastro?:?
Ah citrus allora alla fine la data l'hai formattata con quel metodo che hai scoperto?
Ciao |
citrus |
sissignore e funziona pure bene!!
anzi funziona anastro!!!! |
m@cCo |
Perfetto!
Allora non è che me lo presti un attimo, te lo ridò subito:D
Così magari 35 lo prendo sul serio...se magari!:D
Ciao |
citrus |
in che senso me lo presti scusa?
(ps: abbiamo trattato la cosa qualche pagina indietro)
ciauz! |
m@cCo |
Si lo so, la mia era una battuta:D
Adesso vedo, se mi viene voglia di sbattermi ancora un pò...
Ciao |
m@cCo |
Citrus scusa se ti rompo ancora, ma con la classe SimpleDateFormat come cavolo faccio a trasformare la data in stringa per stamparla?
Ciao |
citrus |
devi richiamare il metodo format(Date) della calsse SimpleDateFormat che ti restituisce una stringa che tu poi puoi stampare
ex:
SimpleDateFormat formatter=new SimpleDateFormat(pattern);
out.println(formatter.format(new Date()));
ciauz! |
m@cCo |
Ok adesso provo
Ciao |
lockit |
Progetto finito, ma questa frase del malchiodi mi lascia si sale:
"saranno illustrate le principali scelte implementative e le strategie utilizzate per svolgere il progetto"
Voi cosa avete scritto ??
datemi almeno un idea perchè non riesco proprio a capire che c...o dobbiamo scrivergli
ciao |
fulminato1 |
bella lockit, hai già finito?
ma domani vieni lo stesso al silab? |
citrus |
Originally posted by lockit
Progetto finito, ma questa frase del malchiodi mi lascia si sale:
"saranno illustrate le principali scelte implementative e le strategie utilizzate per svolgere il progetto"
Voi cosa avete scritto ??
datemi almeno un idea perchè non riesco proprio a capire che c...o dobbiamo scrivergli
ciao
per intero iltesto dice:
"Durante la prova orale con i singoli studenti saranno discusse le modalità implementative adottate e la padronanza di alcuni dei concetti necessari per preparare il progetto."
quindi tu non devi scrivergli niente....
casomai sarà lui che nell'orale ti chiederà ad esempio come mai hai utilizzato un metodo piuttosto che un altro ecc....
la cosa quindi si riferiva all'orale, tu di scritto se non sbaglio devi solo fare il manule dell'utente.
confermate? |
lockit |
Originally posted by citrus
per intero iltesto dice:
"Durante la prova orale con i singoli studenti saranno discusse le modalità implementative adottate e la padronanza di alcuni dei concetti necessari per preparare il progetto."
quindi tu non devi scrivergli niente....
casomai sarà lui che nell'orale ti chiederà ad esempio come mai hai utilizzato un metodo piuttosto che un altro ecc....
la cosa quindi si riferiva all'orale, tu di scritto se non sbaglio devi solo fare il manule dell'utente.
confermate?
lui dice esattamente così sul documento che ho io:
Nell’archivio dovrà anche essere accluso un breve documento in formato txt o rtf in cui
verrà descritto il modo in cui interfacciarsi con il programma
saranno illustrate le principali scelte implementative e le strategie utilizzate per svolgere il progetto
dici che un file così gli và bene:
Progettino di Informatica generale e laboratorio(Mereghetti, Malchiodi)
Il programma e molto semplice da utilizzare basta compilare tutte le classi del file zip e lanciare la classe MainLoop. All'avvio una finestra d'aiuto spiegerà i comandi e potrà essere visualizzata tutte le volte che si vuole con il comando aiuto.
Il programma è molto semplice si tratta di dare dei comandi testuali dalla riga di comando '->', le procedure di inserimento dati o di funzione dei comandi sono spiegate all'interno del programma.
che ne dici?
|
citrus |
mannaggia in effetti hai proprio ragione!
a quanto pare bisogna anche descrivere le proprie scelte di implementazione e spiegarne il motivo.
non so ad esempio per la classe SimpleFormatDate chi l'ha usata può dire che l'ha fatto perchè permette di creare manualmente un formato di data e che quindi questa cosa la rende portabile anche su altri progetti (ad esempio).
non so poi fino a che punto ci si debba spingere, qui si dice "le principali scelte implementative" quindi penso si riferisca a tutto quello che "di tuo" hai messo nel progetto.
(ovviamente non serve spiegare perchè hai usato un array per memorizzare gli eventi perchè questo ti è stato imposto). |
lockit |
Grazie mille citrus, vedro di fare quello che posso visto in italiano non è che mela cavo molto
:D :D |
Voodoo |
scusate una domandina....ma il benedetto log deve essere salvato come nell'esempio del formato elettronico tutto su un'unica riga(che tra l'altro in quell'esempio c'è confusione tra prezzo e numero della priorità..)o si può salvare ogni evento su righe diverse tornando a capo??
Ringrazio colui/lei che mi risponderà.
Bye |
gabry_deejay |
devi tornare a capo.....se non mi sbaglio....come un vero log:D |
fulminato1 |
penso proprio di si!probabilmente è anke più gestibile, andresti ad avere una riga per ogni evento,molto più ordinato ke non andando a capo. |
m@cCo |
Uè qui si fan le cose in grande!
Pure il comando aiuto e il prompt dei comandi...:D
Ciao |
fulminato1 |
Originally posted by m@cCo
Uè qui si fan le cose in grande!
Pure il comando aiuto e il prompt dei comandi...:D
Ciao
cosa? |
francyghisla |
un'altra domanda sul manuale utente che va consegnato...
avete sentito anche voi alla presentazione che deve essere lungo al massimo 2 pagine??
ma così non c'è abbastanza spazio per mettere tutti i commenti sulle scelte implementative, al max si può dire dove vengono gestite le eccezioni, due parole sulla gestione delle date e poco altro...
fatemi sapere! grazie mille! |
|
|
|
|