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

Collection et Stream Java Discussion :

Réinitialiser objet ou tableau à chaque clic sur mon bouton


Sujet :

Collection et Stream Java

  1. #1
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut Réinitialiser objet ou tableau à chaque clic sur mon bouton
    Bonjour,

    Je développe une application en swing et un problème survient.

    Les anciennes valeurs de mon extract précédent de chaque agent revienne.

    Y'a-t-il un moyen de réinitialiser mon objet à chaque fois que je clique sur mon bouton ?

    En effet, je me suis rendu compte qu'il reprend mes anciennes valeurs.

    Comment réinitialiser mon objet Agent ?

    je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    if (send1 == e.getSource()) {// si on appuie sur le 1er bouton 'Alimenter...'
    //réinitialiser mon objet
     
    ensuite mon traitement...
     
     
    }
    Sinon, est-il possible de réinitialiser les valeurs d'un tableau ?

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    T'as pas un peu plus de code à nous montrer, parce que c'est pas très clair là

  3. #3
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    for (Iterator rowIt = sheet.rowIterator(); rowIt.hasNext();){
    					row = (HSSFRow) rowIt.next();
    					Agent a = new Agent();
    					n++;// pour avoir le numéro de chaque ligne lue
    					if(row.getRowNum() == 6 && row.getCell(0) != null){//pour obtenir la date de l'extract et déterminer sa semaine dans l'année.
    						//System.out.println("DDDAAATTTEEE: "+row.getCell(0).getStringCellValue());
    						if(row.getCell(0).getStringCellValue().startsWith("Le")){
    							date_extract = row.getCell(0).getStringCellValue().substring(3,13);//on récupère la date
    							System.out.println("date_extract: "+date_extract);
    							// Date actuelle
    							datextract = formatter.parse(date_extract);
    							calendar.setTime(datextract);
    							calendar.setFirstDayOfWeek(Calendar.THURSDAY);// fixe le début d'une semaine le JEUDI au MERCREDI SOIR
    							semaine = calendar.get(Calendar.WEEK_OF_YEAR);//récupérer la semaine dans l'année pour faire la comparaison avec les onglet du fichier de destination
    							//System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));
    							System.out.println("semaine 'Le': "+semaine);
    						}
    					}
    					if(row.getCell(0) != null && row.getCell(0).getStringCellValue().startsWith("Agent")){//si les lignes de la colonne 0 ne sont pas null
    						prenom_agent=row.getCell(0).getStringCellValue();//on récupère notre agent
    					    //isub = nom_agent.indexOf(",");
    					    sub = prenom_agent.substring(prenom_agent.indexOf(",")+1).trim();//récupérer la chaine après la virgule, après l'espace mais sans l'espace à la fin
    					    //System.out.println(sub);
    					    a.setAgent(sub);//on récupère notre agent dans notre objet
    						System.out.println(a.getAgent()); //on l'affiche
    					}
    					if(row.getCell(1) != null && row.getCell(1).getStringCellValue().startsWith("Validation")){// si les lignes de la colonne 2 ne sont pas null
    							valid++; //Nombre de validation détecter dans le fichier
    							n_l_valid = n; // on récupère le numéro de ligne de la Validation
    							//System.out.println(nom_agent);
    							n_l_valid--;//on décrémente pour récupérer la validation dans le fichier
    							//valid_recupere=sheet.getRow(n_l_valid).getCell(4);// on récupére la validation dans le fichier
    							//System.out.println("Validation: "+valid_recupere);//on l'affiche
    							a.setValidation((int)sheet.getRow(n_l_valid).getCell(4).getNumericCellValue());//on récupère notre agent dans notre objet sous forme d'entier
    							System.out.println("validation: "+a.getValidation());//on l'affiche
    					}
    					listAgent.add(a);
    				}
    Pour la première alimentation, c'est OK:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Agent: YVANE Validation: 1
    Agent: PAULE Validation: 1
    Agent: ISABELLE Validation: 1
    Agent: YOANN Validation: 1
    Mais la 2ème alimentation, J'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Agent: YVANE Validation: 1
    Agent: PAULE Validation: 1
    Agent: ISABELLE Validation: 1
    Agent: YOANN Validation: 1
    Agent: PAULE Validation: 2
    Agent: MIKAEL Validation: 1
    En faite, je ne devrais avoir que résultat là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    
    Agent: PAULE Validation: 2
    Agent: MIKAEL Validation: 1
    et pas ceux que j'ai déja alimenter auparavant.
    Je suppose que mon objet doit être réinitialiser à chaque appel du bouton "alimentation".

    Une idée ??

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Fait un listAgent.clear(); en première instruction sur l'appui de ton bouton, pour vider le tableau et ainsi ne plus avoir dedans l'alimentation précédente.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    listAgent est une ArrayList en faite.
    C'est déjà mieux, sauf que...

    Ca me donne toujours PAULE et MIKAEL mais là j'ai 2 personnes qui n'ont pas de validation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Agent: PAULE Validation: 2
    Agent: MIKAEL Validation: 1
    Agent: ELOUAN Validation: 1
    Agent: YOANN Validation: 1
    je suppose fortement que je dois aussi réinitialiser mon tableau tab:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String tab[][] = new String [100][100];
    Comment réinitialiser les valeurs d'un tableau ?

  6. #6
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    Je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(int i=0;i<tab.length;i++)
    for(int j=0;j<tab[j].length;j++)
    tab[i][j]=null;
    J'ai un message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 100
    ligne impacté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(int j=0;j<tab[j].length;j++)

  7. #7
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2011
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2011
    Messages : 101
    Points : 134
    Points
    134
    Par défaut
    Je ne connais pas de méthode qui permet de vider automatiquement. Mais tu peux toujours faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int i=0;i<tab.length;i++)
    for(int j=0;j<tab[i].length;j++)
    tab[i][j]=null;
    Ou de manière plus optimale (si tu n'écris que dans les premières valeurs libres) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    for(int i=0;i<tab.length;i++)
    {
    	for(int j=0;j<tab[i].length;j++)
    	{
    		if(tab[i][j]==null)
    		{
    			break;
    		}
    		tab[i][j]=null;
    	}
    	if(tab[i][0]==null)
    	{
    		break;
    	}
    }

  8. #8
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    Je fais ceci, ca fonctionne !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int i=0;i<tab.length;i++){
    for(int j=0;j<tab.length;j++){
    tab[i][j]=null;
    }
    }
    C'est un tableaux à 2 dimensions:

    tab[i][j]

    J'ai peur de mettre tromper pour mettre à null les 2 dimensions...

    Mais ca fonctionne !

  9. #9
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2011
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2011
    Messages : 101
    Points : 134
    Points
    134
    Par défaut
    Ceci est faux...

    Ca marche car ton tableau est de type [100][100] et donc :

    tab.length == tab[i].length

    Si ton tableau fait [100][2], ça ne marchera plus contrairement à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int i=0;i<tab.length;i++)
    for(int j=0;j<tab[i].length;j++)
    tab[i][j]=null;

  10. #10
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    merci ca marche !!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/06/2014, 19h01
  2. Afficher ou masque un tableau grace a un clic sur un bouton
    Par sak_ura dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 14/11/2011, 15h39
  3. Réponses: 7
    Dernier message: 26/05/2009, 19h55
  4. Réponses: 8
    Dernier message: 29/06/2007, 15h41
  5. Réponses: 8
    Dernier message: 09/12/2005, 15h08

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