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

Langage Java Discussion :

Probleme if grammaire java


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Par défaut Probleme if grammaire java
    Bonjour,
    je voudrais comparer des elements dans 2 listes, la 1ere fois que je trouve l'element_1 de liste_A dans la liste_B, je vais mettre element_1 dans un fichier"ParserFiles"; si après je me retrouve l'element_1 dans la liste_B je dois le mettre dans "SurchargerFiles". excusez moi si je m'explique mal.
    mon problème c'est que si je déclare String NomBdl =ListeBdl.get(i);
    mon IF ne marche pas, il passe jamais dedans; mais si je remplace ListeBdl.get(i) par une chaine précise, mon IF marche, je ne vois pas où est le problème, qqn a une idée? merci beaucoup!
    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
     
    for(int i=0; i<ListeBdl.size();i++)
    {
    	String NomBdl ="familles-global.bdl"; //ListeBdl.get(i);
    	int trouve=0;
    	for(int j=0; j<ListePath.size();j++)
    			 {						 					 				 
    	if(ListePath.get(j).contains(NomBdl))
    		{		
    			switch(trouve)
    			{
    				case 0: ParserFiles.add(ListePath.get(j));
    					trouve = 1;
    					break;
    				case 1: SurChargerFiles.add(ListePath.get(j));
    					break;
    					default: break;
    						                     }												
    					 }				 
    			}			
    		}

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Par défaut
    Tu as bien deux listes de String ?

    Si c'est bien le cas tu appelles "contains" au lieu de "equals" dans ton "if". Néanmoins tu devrais entrer dans ton "if" si les deux chaines sont equals puisque contains et moins fort que equals... Tu es bien sur que tu as dans tes deux listes au moins une fois la même String ??


    En attendant, ton code améĺioré :
    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
     
    HashMap<String, Integer> mapPath = new HashMap<String, Integer>(ListePath.size(), 1);
     
    // Initialisation de la map
    for(String path : ListePath){
       Integer occurence = mapPath.get(path);
       if(occurence == null){
          mapPath.put(path, new Integer(1));
       }
       else{
          mapPath.put(path, new Integer(occurence.intValue() + 1));
       }
    }
     
    // Deux string identiques ayant le meme hashcode, il suffit de lire la valeur associée a ta string dans mapPath
    for(String nomBdl : ListeBdl){
       Integer occurence = mapPath.get(nomBdl);
       if(occurence != null){
          ParserFiles.add(nomBdl);
          if(occurence.intValue() > 1){
             SurChargerFiles.add(nomBdl)
          }
       }
    }
    Ainsi la complexité de ton algo passe de O(n^2) à O(n)

  3. #3
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Par défaut
    merci pour ta reponse!
    oui, c'est deux string.
    j'avais pensé pour "equal", mais le problem c'est que les elements dans 2 liste ne sont pas tt à fait identique, il y a que une partie, par ex:
    dans liste_1 j'ai monElement1, et dans liste_2 c'estmonElement1
    est ce que ton program s’adapte aussi ce cas? (je maitrise pas bien les map)
    Citation Envoyé par Vakhyw Voir le message
    Tu as bien deux listes de String ?

    Si c'est bien le cas tu appelles "contains" au lieu de "equals" dans ton "if". Néanmoins tu devrais entrer dans ton "if" si les deux chaines sont equals puisque contains et moins fort que equals... Tu es bien sur que tu as dans tes deux listes au moins une fois la même String ??


    En attendant, ton code améĺioré :
    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
     
    HashMap<String, Integer> mapPath = new HashMap<String, Integer>(ListePath.size(), 1);
     
    // Initialisation de la map
    for(String path : ListePath){
       Integer occurence = mapPath.get(path);
       if(occurence == null){
          mapPath.put(path, new Integer(1));
       }
       else{
          mapPath.put(path, new Integer(occurence.intValue() + 1));
       }
    }
     
    // Deux string identiques ayant le meme hashcode, il suffit de lire la valeur associée a ta string dans mapPath
    for(String nomBdl : ListeBdl){
       Integer occurence = mapPath.get(nomBdl);
       if(occurence != null){
          ParserFiles.add(nomBdl);
          if(occurence.intValue() > 1){
             SurChargerFiles.add(nomBdl)
          }
       }
    }
    Ainsi la complexité de ton algo passe de O(n^2) à O(n)

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Par défaut
    Non mon programme ne marche que si les deux String sont "equals" et donc exactement les memes

    Pour résoudre ton problème de IF, essaie d'afficher les deux String qui sont comparées et tu devrais voir pourquoi ça ne marche pas.

  5. #5
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Par défaut
    je le sais pourquoi! en faite mon code ça peut marcher, c'est à cause du séparateur "/" et "\", dans le chemin des fois c'est "/" des fois c'est "\" du coup il connais plus, comment je peux faire pour qu'il connaisse les deux?
    Citation Envoyé par Vakhyw Voir le message
    Non mon programme ne marche que si les deux String sont "equals" et donc exactement les memes

    Pour résoudre ton problème de IF, essaie d'afficher les deux String qui sont comparées et tu devrais voir pourquoi ça ne marche pas.

  6. #6
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par shuang Voir le message
    je le sais pourquoi! en faite mon code ça peut marcher, c'est à cause du séparateur "/" et "\", dans le chemin des fois c'est "/" des fois c'est "\" du coup il connais plus, comment je peux faire pour qu'il connaisse les deux?
    Pour avoir le code le plus générique possible, il faut mieux utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.getProperty("path.separator");
    Celui-ci sera \ sur Windows et / sur Unix (ou l'inverse enfin le principe est là quoi ^^).

    Je n'ai pas suivis tout le sujet donc je ne sais pas si ceci répondra à ton problème du départ.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

Discussions similaires

  1. probleme tri en java
    Par kloe dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 18/10/2006, 23h01
  2. [REDHAT] Probleme avec la java RE
    Par blackstreet dans le forum RedHat / CentOS / Fedora
    Réponses: 9
    Dernier message: 15/06/2006, 10h22
  3. Probleme d'exception : java.net.UnknownHostException
    Par kedare dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 08/06/2006, 20h59
  4. Probleme SQL prepareStatement JAVA
    Par grizzz dans le forum Langage SQL
    Réponses: 12
    Dernier message: 05/08/2005, 11h29
  5. Problème d'installation java
    Par mickey hollywood dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 23/03/2005, 11h01

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