Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: array

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    213

    array

    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.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Se vuoi partire da 1 liberissimo di farlo... Solo che così facendo partirai dal secondo elemento dell'array Che 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

  3. #3
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Esattamente come dice Alex'87.

    In altri linguaggi (VBA, ad esempio) puoi specificare qualunque valore per gli indici minimo e massimo: in Java no

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    213
    Ho scritto questo codice per trovare il giorno della settimana da una data qualsiasi:
    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();
           }
    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:
    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.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    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

  6. #6
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    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ì:

    codice:
    String[] giorni = new String[] {"Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"};
    . . .
    String giorno = giorni[cal.get(Calendar.DAY_OF_WEEK) - 1];
    Il "-1" effettua la decodifica fra valore ritornato da get() e indice dell'array.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    scusa desa, non usano Enumeration ormai per fare costanti di questo tipo??

  8. #8
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Una Enumeration fa la stessa cosa di un Iterator: serve a elencare, uno alla volta, una lista di elementi. Cosa vuoi dire di preciso?

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    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

  10. #10
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    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"?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.