IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

liste objet dans if


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut liste objet dans if
    Bonjour à tous,

    J'ai besoin de votre aide. J'aimerai parcourir une liste de vector, puis récupérer une partie(quelques valeurs) de cette liste puis le comparer à 2 dates. Ci après le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for(int n=0; n<vdata.size(); n++){
    	String datedebit = vdata.get(n).getDate();
    	datedebit = vdata.get(n).getDate();
    	Date dtxt = new Date();
    	dtxt = df.parse(datedebit); 
     
    	if(!(ddeb.compareTo(dtxt) == 0) && (dfin.compareTo(dtxt)==0)){
     
    		 System.out.println("allOALO "+df.format(ddeb)+ "listedate dtxt"+df.format(dtxt)); //Cela affiche la date debut saisi et la date fin au lieu d'afficher la date début et dtxt
     
    	}
      }
    Avant de commencer, j'ai testé si je reçois la date "datedebit"(liste date du fichier) après avoir comparer avec datedébut et datefin. Mais cela n'affiche que la date fin(dfin). Je ne comprend pas alors pourquoi je ne peut plus recevoir la liste de "datedebit" dans le "if".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int n=0; n<vdata.size(); n++){
    	String datedebit = vdata.get(n).getDate();
    	datedebit = vdata.get(n).getDate();
    	Date dtxt = new Date();
    	dtxt = df.parse(datedebit); 
    	 System.out.println( "listedate dtxt"+df.format(dtxt)); 
    	if(!(ddeb.compareTo(dtxt) == 0) && (dfin.compareTo(dtxt)==0)){
    	}
      }
    cela affiche la liste dans le fichier.

    Pourriez vous m'aider svp,
    Merci beaucoup

    Aplus

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    (dfin.compareTo(dtxt)==0) est équivalent à dfin.equals(dtxt) donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!(ddeb.compareTo(dtxt) == 0) && (dfin.compareTo(dtxt)==0)){
    peut s'écrire plus simplement comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( !ddeb.equals(dtxt) && dfin.equals(dtxt)){
    donc normal que tu n'aies que la dfin sélectionnée.

    Pour obtenir toutes les dates comprises entre ddeb et dfin incluses, le test devra être comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(  ddeb.compareTo(dtxt) <= 0  && dfin.compareTo(dtxt) >= 0 ) {
    ddeb.compareTo(dtxt) <= 0 : si ddeb est inférieur à dtxt
    dfin.compareTo(dtxt) >= 0 : si dfin est supérieur à dtxt

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut liste objet dans if
    Resalut,

    Merci beaucoup, c'est claire. J'ai essayé alors avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     for(int n=0; n<vdata.size(); n++){
    	String datedebit = vdata.get(n).getDate();
    	datedebit = vdata.get(n).getDate();
    	Date dtxt = new Date();
    	dtxt = df.parse(datedebit); 
     
    	if(!(ddeb.compareTo(dtxt) >= 0) && (dfin.compareTo(dtxt)<=0)){	
            System.out.println("Date debut ddeb: "+df.format(ddeb)+"date fin dfin: "+df.format(dfin));
    		 System.out.println("Liste obtenue: "+datedebit);
    	}
    Ce qui affiche la liste des dates avant la date début seulement:
    Date debut ddeb: 05-06-2014date fin dfin: 07-06-2014
    Liste obtenue: 01-06-2014
    Date debut ddeb: 05-06-2014date fin dfin: 07-06-2014
    Liste obtenue: 02-06-2014
    Date debut ddeb: 05-06-2014date fin dfin: 07-06-2014
    Liste obtenue: 03-06-2014
    Date debut ddeb: 05-06-2014date fin dfin: 07-06-2014
    Liste obtenue: 04-06-2014


    Comment prendre la liste entre les intervvalles [ddeb,dfin]?
    Merci,
    Aplus

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Enlève le not (le !) de ton test...

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 39
    Points
    39
    Par défaut Merci
    ça y est, ça marche, retourne la liste entre l'intervalle [ddeb,dfin]

    merci beaucoup Joel.drigo,

    Aplus

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Juste trois petite question sur ces quelques lignes de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     for(int n=0; n<vdata.size(); n++){
    	String datedebit = vdata.get(n).getDate();
    	datedebit = vdata.get(n).getDate();
    	Date dtxt = new Date();
    	dtxt = df.parse(datedebit); 
    	...
    }
    • Pourquoi ne pas utiliser la boucle for-étendu de Java 5. C'est plus court et plus lisible.
    • Pourquoi affecter deux fois la valeur dans "datedebit" ?
    • Pourquoi créer un objet Date() inutilement à la déclaration de dtxt ?



    Bref pourquoi ne pas faire tout simplement ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     for(LeTypeDeMaListe data : vdata) {
     	String datedebit = data.getDate();
    	Date dtxt = df.parse(datedebit); 
    	...
    }

    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/09/2006, 17h21
  2. récupérer un objet dans une liste chainée
    Par marsuwhite dans le forum Langage
    Réponses: 4
    Dernier message: 05/06/2006, 14h05
  3. insertion d'objets dans une liste chainee
    Par mathher dans le forum C++
    Réponses: 8
    Dernier message: 20/04/2006, 16h28
  4. [Swing][JList] Placer un Objet dans une liste
    Par Invité dans le forum Composants
    Réponses: 1
    Dernier message: 17/02/2006, 10h31
  5. Modifier l'ordre des objets dans dans une liste
    Par Mac_Gyver dans le forum Access
    Réponses: 2
    Dernier message: 24/01/2005, 11h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo