Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Dove sbaglio???

  1. #1

    Dove sbaglio???

    Non capisco dove sbaglio in questo frammento di codice java :

    -------------------------------------------------------------------------------------------------------------------

    public Vector controllaIntervallo(Date prima,Date seconda){

    Vector v = new Vector();
    while (prima.before(seconda)){

    v.add(prima);
    prima.setDate(prima.getDate + 1);

    }

    return v;
    }

    -------------------------------------------------------------------------------------------------------------------

    Vorrei che mi creasse un vettore con le date comprese tra prima e seconda e me lo ritornasse.
    Invece se lo si prova a eseguire torna un vettore con tutte date uguali.

    Come mai??

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Dove sbaglio???

    Originariamente inviato da fflachi
    public Vector controllaIntervallo(Date prima,Date seconda){

    Vector v = new Vector();
    while (prima.before(seconda)){

    v.add(prima);
    prima.setDate(prima.getDate + 1);

    }

    return v;
    }
    Innanzitutto getDate/setDate di Date sono metodi deprecati come tutti gli altri setter/getter di Date (ad eccezione di getTime/setTime che sono ancora validi). Quindi non sono da usare più. Anche ammesso di volerli usare (e verrebbe segnalato un warning di deprecated), dovresti comunque fare del lavoro in più tu per gestire un intervallo su più mesi se le due date iniziali non fossero entro lo stesso mese.

    La "aritmetica" sulle date andrebbe gestita correttamente usando un Calendar.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ok...
    quindi per fare una funzione che prende come argomento due date e ritorni il vettore con le date comprese al suo interno con la classe calendar come dovrei fare?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fflachi
    quindi per fare una funzione che prende come argomento due date e ritorni il vettore con le date comprese al suo interno con la classe calendar come dovrei fare?
    Io ho fatto così (non so se è esattamente quello che serve a te):
    codice:
    public static Vector<Date> createDaysVector (Date from, Date to)
    {
        Vector<Date> v = new Vector<Date> ();
    
        Calendar calFrom = Calendar.getInstance ();
        calFrom.setTime (from);
    
        Calendar calTo = Calendar.getInstance ();
        calTo.setTime (to);
    
        while (calFrom.compareTo (calTo) <= 0)
        {
            v.add (calFrom.getTime ());
            calFrom.add (Calendar.DAY_OF_MONTH, 1);
        }
    
        return v;
    }
    Nota che ho usato i "generics" ed ho usato compareTo di Calendar che c'è solo da Java 5.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.