Forse la domanda è un pò sciocca ,ma si può far partire un array da 1 invece che da 0?In java il primo indice di un array che io sappia vale 0.Se invece avessi bisogno farlo valere 1 si può?Grazie.
Forse la domanda è un pò sciocca ,ma si può far partire un array da 1 invece che da 0?In java il primo indice di un array che io sappia vale 0.Se invece avessi bisogno farlo valere 1 si può?Grazie.
Se vuoi partire da 1 liberissimo di farlo... Solo che così facendo partirai dal secondo elemento dell'arrayChe problema hai nell'iniziare a contare da zero?
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Esattamente come dice Alex'87.
In altri linguaggi (VBA, ad esempio) puoi specificare qualunque valore per gli indici minimo e massimo: in Java no
Ho scritto questo codice per trovare il giorno della settimana da una data qualsiasi:
get(Calendar.DAY_OF_WEEK) restituisce un numero che indica il giorno della settimana.Però i giorni della settimana partono da 1 per domenica e cosi via.Siccome vorrei implementare un array invece che un switch pensavo di utilizzare un array per i giorno della settimana tipo:codice:try { DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); Date giorno = df.parse(txtdata.getText()); Calendar cal=new GregorianCalendar(); cal.setTime(giorno); int giorno1 = cal.get(Calendar.DAY_OF_WEEK); switch(giorno1){ case 1: lblabel3.setText("Il giorno della tua nascita è: Domenica"); break; case 2: lblabel3.setText("Il giorno della tua nascita è: Lunedi"); break; case 3: lblabel3.setText("Il giorno della tua nascita è: Martedi"); break; case 4: lblabel3.setText("Il giorno della tua nascita è: Mercoledi"); break; case 5: lblabel3.setText("Il giorno della tua nascita è: Giovedi"); break; case 6: lblabel3.setText("Il giorno della tua nascita è: Venerdi"); break; case 7: lblabel3.setText("Il giorno della tua nascita è: Sabato"); break; } //lblabel3.setText(String.valueOf(giorno1)); } catch (ParseException e) { e.printStackTrace(); }
string[] giorno=giorni[giorni1-1] dove giorni1 è l'indice dell'array ricavato da get,giorni è l'array dei giorni della settimana e giorno è il singolo giorno della settimana.Tutto questo a partire da una data che inserisco in una textbox.
allora le costanti hanno un senso, non sono buttate lì perché si ha voglia di buttare codice.
Se guardi bene Calendar ti trovi anche che monday ecc hanno una costante associata, fai uno switch mettendo quelle come case
Da un certo punto di vista lo switch presenta alcuni benefici. Nel caso specifico, quello che fa il Calendar.get(Calendar.DAY_OF_WEEK) è restituirti il valore di una delle costanti associate ai giorni della settimana: Calendar.SUNDAY, Calendar.MONDAY, ecc.
I tuoi "case" dovrebbero essere nella forma:
case (Calendar.SUNDAY):
case (Calendar.MONDAY):
. . .
In questo modo avresti due grossi vantaggi: ti puoi disinteressare completamente del valore che c'è dentro e, se per qualche assurdo motivo in una nuova release di Java questi valori venissero modificati, la tua applicazione continuerebbe tranquillamente a funzionare.
D'altro canto, la rappresentazione ad array è molto comoda perchè ti permette, ad esempio, di avere una agile struttura dati che memorizza in un unico punto tutti i valori coinvolti: ne risulta semplificata anche la manutenibilità.
Parlando in generale (su strutture dati di una certa entità), la soluzione potrebbe essere quella di utilizzare una HashTable, associando una costante numerica alla sua descrizione testuale. In questo caso particolare, non avendo un impatto particolarmente significativo, puoi tranquillamente scegliere la via che preferisci.
Premesso ciò, quello che vuoi fare può essere realizzato così:
Il "-1" effettua la decodifica fra valore ritornato da get() e indice dell'array.codice:String[] giorni = new String[] {"Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"}; . . . String giorno = giorni[cal.get(Calendar.DAY_OF_WEEK) - 1];
scusa desa, non usano Enumeration ormai per fare costanti di questo tipo??
Una Enumeration fa la stessa cosa di un Iterator: serve a elencare, uno alla volta, una lista di elementi. Cosa vuoi dire di preciso?
sono un po' contorta con robe di questo tipo e ho ancora tante cose da imparare, però ricordavo di aver letto da qualche parte una roba simile a questa guarda qui
http://download.oracle.com/javase/tu...vaOO/enum.html
e mi riferivo proprio a questo, spero che hai capito cosa intendo
Sì, adesso ho capito che intendi. E' un tipo di costrutto che in realtà non ho mai visto usare "sul campo" (e che personalmente non apprezzo più che tanto: mi ricorda molto le DEFINE del C, che mi piacciono sul C ma non vedo bene in Java).
Il problema dell'utilizzo delle enum in questo contesto è che il metodo get() di Calendar ritorna un int, ed è su questo che bisogna effettuare lo switch: come fai a confrontarlo con un tipo "enum"?