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

Entrée/Sortie Java Discussion :

Recherche sur un tableau


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Points : 39
    Points
    39
    Par défaut Recherche sur un tableau
    Voilà je reformule

    Donc j'aimerais rechercher dans un Array une valeur et qu'il me dise où elle est dans le tableau...

    Merci

    Exemple mais ça ne marche pas.
    Donc je cherche la valeur du tableau [1] ou trouve la même valeur et donne la position où elle se trouve .
    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
     for( int i=1;i<tableau.length;i++)
                      {
     
                    	  t=t+1;
                    	  for (int y=i+1;y<tableau.length;y++)
                    	  {
                    		  if (tableau[i] == tableau2[y])
                    		  {
                    			  tableau3[i]=tableau[i];
                    			  tableau4[i]=t;}
                    		  y=tableau.length;
     
     
     
     
     
                    	  }c=0;
                    	  System.out.print(" = ");
                    	  System.out.print( tableau3[i] );  
                          System.out.print(" ");
                          System.out.print( tableau4[i] );  
                          c=c+1;
                          if (c==5) {
                       	   c=0;
                       	   System.out.println(" ");
                          }
     
            }

  2. #2
    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
    Points : 13 670
    Points
    13 670
    Par défaut
    Ton code est plus tordu que ce que tu prétends vouloir réaliser. Tu as des boucles imbriquées on ne sait pas trop pourquoi et 4 tableaux.

    Moi si je me limite à ce que tu as demandé, tu veux : rechercher une valeur dans un tableau et connaître sa position. Ca signifie donc :
    1. Parcourir le tableau
    2. Durant le parcours vérifier si la valeur de l'élément du tableau est égale à la valeur recherchée
    3. Si la vérification est ok, conserver la valeur de l'élément du tableau sur lequel tu es rendu

    A partir de là un truc du genre suffirait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String maValeur = "toto";
    int monIndice;
     
    for (int i=0 ; i< tab.length ; i++) {
      if (maValeur.equals(tab[i]) {
        monIndice = i;
      }
    }
    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/

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Points : 39
    Points
    39
    Par défaut ok mais
    mais j arrive pas a l integrer
    donc une valeur dans le tableau si elle existe sur le tableau si oui numéro du tableau
    en prend premiere valeur du tableau[1] est en recherche si il une meme valeur ... recherche dans tableau[2] etc
    ensuite valeur tableau[2] recherche a partir tableau[3] etc
    voila


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      for( int i=1;i<tableau.length;i++)
                      {
     
                    	  t=t+1;
                    	  int maValeur=tableau[i];
                    	  int tot;
                    	  for (int y=i+1;y<tableau.length;y++)
                    	  {
     
                    		  if (maValeur.equals(tab[i]) 
                    				  {
                    			 tot=(i/5);
                    			    tableau2[i]=tot;
                    			  }

  4. #4
    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
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par giovanni Voir le message
    mais j arrive pas a l integrer
    donc une valeur dans le tableau si elle existe sur le tableau si oui numéro du tableau
    en prend premiere valeur du tableau[1] est en recherche si il une meme valeur ... recherche dans tableau[2] etc
    ensuite valeur tableau[2] recherche a partir tableau[3] etc
    voila
    Donc on est bien d'accord, ton besoin est différent de ce que tu exprimais au début.

    De ce que je comprends (partiellement) :
    1. Tu veux rechercher si une valeur existe dans un tableau
    2. Puis si tu trouves la position de cette valeur, tu la stockes quelque part
    3. Tu veux rechercher cette même valeur dans un tableau ?? // Là j'ai pas compris
    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/

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Points : 39
    Points
    39
    Par défaut recherche de valeur
    oui dans le même tableau ...
    valeur tableau[1] ...recherche dans le tableau[2] ,tableau[3]...etc jusque qu'il la trouve...
    ensuite prend la valeur tableau[2] st recherche dans le tableau[3] ,tableau[4]...etc jusque qu'il la trouve...
    est ainsi de suite jusqu'e la fin
    merci

  6. #6
    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 : 54
    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,

    Si tu prends l'exemple de @Robin56 du message #2 et que tu le modifies un peu pour en faire une méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static int recherche(int maValeur, int[] tab, int depart ) {
       int monIndice=-1;
       for (int i=depart ; monIndice==-1 && i< tab.length ; i++) {
           if (maValeur==tab[i]) {
              monIndice = i;
           }
       }
       return monIndice;
    }
    Tu peux simplement faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int i=0; i<tab.length-1; i++) {
     
        int indiceTrouve = recherche(tab[i], tab, i+1);
        if ( indiceTrouve>= 0 ) {
            /* ... on a trouvé la valeur et indiceTrouve est l'endroit (l'indice) où ça été trouvé ... */
        }
     
    }
    Pour stocker les indices trouvés (et cherchés) dans un tableau, pour les exploiter plus tard :

    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
     
    int indiceTableau=0;
    int[] tableauIndiceCherche = new int[tab.length];
    int[] tableauIndiceTrouve = new int[tab.length];
    for(int i=0; i<tab.length-1; i++) {
     
        int indiceTrouve = recherche(tab[i], tab, i+1);
        if ( indiceTrouve>= 0 ) {
            // par exemple
            tableauIndiceCherche[indiceTableau] = i;
            tableauIndiceTrouve[indiceTableau] = indiceTrouve;
            indiceTableau++; // on passe à la case suivante
        }
     
    }
     
    for(int i=0; i<indiceTableau; i++) {
        System.out.println( "valeur  " + tab[tableauIndiceCherche[i]] + " (indice = "+ttableauIndiceCherche[i]+") + " trouvée à l'indice " + tableauIndiceTrouve[i] );
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Points : 39
    Points
    39
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (maValeur.equals(tableau[i]))
    cette ligne la me fais probleme

    Cannot invoke equals(int) on the primitive type int
    Syntax error, insert ") Statement" to complete BlockStatements

    je comprend pas pourquoi

  8. #8
    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 : 54
    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
    On ne peut pas appeler equals() sur un type primitif (dans ton cas, un int). L'exemple de @Robin56 était avec une valeur de type String, d'où le equals(). Si tu regardes mon exemple, tu verras que je l'ai remplacé par ==.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Points : 39
    Points
    39
    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
    int indiceTableau=0;
                      int[] tableauIndiceCherche = new int[tableau.length];
                      int[] tableauIndiceTrouve = new int[tableau.length];
                      for(int i=0; i<tableau.length-1; i++) {
     
                          int indiceTrouve = recherche(tableau[i], tab, i+1);
                          if ( indiceTrouve>= 0 ) {
                              // par exemple
                              tableauIndiceCherche[indiceTableau] = i;
                              tableauIndiceTrouve[indiceTableau] = indiceTrouve;
                              indiceTableau++; // on passe à la case suivante
                          } 
                      }
    il me fait une erreur a la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int indiceTrouve = recherche(tableau[i], tab, i+1);
    tab cannot be resolved to a variable

    je dois declarer comme la variable tab?

    merci

  10. #10
    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
    Points : 13 670
    Points
    13 670
    Par défaut
    Tes deux dernières erreurs sont assez compréhensibles d'elles-même pour que tu en fasses les correctifs adaptées. Pense donc à faire des recherches et des essais avant de faire ce genre de demande.

    Typiquement pour ce problème, pose toi la question : dans quel tableau je veux rechercher ma valeur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int indiceTrouve = recherche(tableau[i], tab, i+1);
    Puisque depuis le début c'est dans le tableau qui se nomme "tableau", il faut donc surement préciser à ta méthode le tableau en question ce qui donnerait alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int indiceTrouve = recherche(tableau[i], tableau, i+1);
    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/

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Points : 39
    Points
    39
    Par défaut suite
    en corrigent me fais erreur

    The method recherche(int, int[], int) is undefined for the type files

    donc mis juste tableau au lieu de tab

  12. #12
    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 : 54
    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
    Le message d'erreur dit que la méthode n'est pas définie ! Donc, tu dois... la définir...

    Citation Envoyé par joel.drigo Voir le message
    Si tu prends l'exemple de @Robin56 du message #2 et que tu le modifies un peu pour en faire une méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public static int recherche(int maValeur, int[] tab, int depart ) {
    /*...*/
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Points : 39
    Points
    39
    Par défaut erreur toujours
    je vous met le code au complet

    en ajoutant la ligne me fais erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static int recherche(int maValeur, int[] tab, int depart );
    Illegal modifier for the variable recherche; only final is permitted
    Syntax error on token "(", ; expected
    Syntax error on token ",", ; expected
    Syntax error on token ",", ; expected
    Syntax error on token ")", delete this token
    The method recherche(int, int[], int) is undefined for the type files

    pas compris manque des parentese ou des ; ?

    merci

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    package file;
    import java.io.*;
    import java.io.File;
    import java.io.FileReader;
    public class files 
    {
     int [] tableau;
     int [] tableau2=new int[1000];
     int [] tableau3=new int[1000];
     int [] tableau4=new int[1000];
     int n=0;
     int c=1;
     
      /**
       * Constructeur
       */
      public files()
      {
     
     
     try(BufferedReader b = new BufferedReader( new FileReader( new File("D:/taxe.txt") ) ) )
     {            
                        String line;
                        // Lecture du fichier ligne par ligne. Cette boucle se termine
                        // quand la méthode retourne la valeur null.
                while ((line = b.readLine()) != null) {    
     
                      // STOCK LA LIGNE DANS UN BUFFER
                     // String tmp = b.readLine();
     
                      // COUPE LA LIGNE SUIVANT LES ESPACES
                      String [] args = line.split("\\s+");
     
                      // ALLOUE NOTRE TABLEAU DE N ELEMENTS
                      tableau = new int[args.length];
     
                      // COPIE CHAMP A CHAMP + AFFICHAGE
                      for( int i=1;i<tableau.length;i++)
                      {
     
                        tableau[i] = Integer.parseInt( args[i] );
     
     
                       System.out.print( tableau[i] );  
                       System.out.print(" ");
                       c=c+1;
                       if (c==6) {
                    	   c=1;
                    	   System.out.println(" ");
                       }
                                            n++; 
     
                      }
                      int t=0;
                      public static int recherche(int maValeur, int[] tab, int depart );
                      {
                      int indiceTableau=0;
                      int[] tableauIndiceCherche = new int[tableau.length];
                      int[] tableauIndiceTrouve = new int[tableau.length];
                      for(int i=0; i<tableau.length-1; i++) {
     
                          int indiceTrouve = recherche(tableau[i], tab, i+1);
                          if ( indiceTrouve>= 0 ) {
                              // par exemple
                              tableauIndiceCherche[indiceTableau] = i;
                              tableauIndiceTrouve[indiceTableau] = indiceTrouve;
                              indiceTableau++; // on passe à la case suivante
                          }
     
     
                      }
                }}
     }
     
     
     
     
     
              catch( IOException e )
              {
                    //  System.out.println("Erreur, le fichier n'existe pas ou est mal formaté");
                      e.printStackTrace();
              }
      }
      /**
       * MAIN
       */
      public static void main( String [] args )
      {
        // On lance notre lire fichier
        new files();
      }
    }

  14. #14
    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 : 54
    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
    Euh, c'est quoi ce public static int recherche(int maValeur, int[] tab, int depart ); en plein milieu du constructeur de ta classe files ? Une méthode, déjà, ça se déclare dans le corps d'une classe, pas dans une autre méthode, ou un constructeur. Ensuite, ce serait formidable s'il suffisait d'écrire un nom de méthode et ses paramètres pour qu'elle fasse miraculeusement ce qu'on voudrait qu'elle fasse, mais normalement, on met du code dans une méthode pour qu'elle fasse justement quelque chose. Surtout que je t'ai donné tout le code de cette méthode, qu'il suffit de copier et coller dans ta classe.

    Par ailleurs, un petit coup de formatage sur la classe ne serait pas du luxe (CTRL-SHIFT-F dans Eclipse par exemple).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Points : 39
    Points
    39
    Par défaut public
    je lai mis ...la
    je pensais le mettre ou je voulais ..mais suite a l erreur l'ai mis aussi ,juste après le premier public ..ca n'a rien changer

    le shift ctrl est f ..me fesais erreur word....au debut constructeur ,,je l'ai enlever
    merci

  16. #16
    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 : 54
    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
    Citation Envoyé par giovanni Voir le message
    je lai mis ...la
    je pensais le mettre ou je voulais ..mais suite a l erreur l'ai mis aussi ,juste après le premier public ..ca n'a rien changer
    Qu'est-ce veut dire juste après le premier public ? Et quoi ?
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public public static int recherche(int maValeur, int[] tab, int depart); class files {
    /**...**/
    }
    le shift ctrl est f ..me fesais erreur word....au debut constructeur ,,je l'ai enlever
    merci
    Euh, quoi ? Erreur word ? Tu programmes sous Word ? Comment ça tu l'as enlevé ?

    Voilà ta classe, avec le code formaté proprement, et la méthode recherche dans le corps de la classe, avec son code complet. Au passage, tu n'avais pas fait la correction du nom de la variable tab dont te parlait @Robin56 ! Je l'ai aussi corrigé.

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    public class files {
    	int[] tableau;
    	int[] tableau2 = new int[1000];
    	int[] tableau3 = new int[1000];
    	int[] tableau4 = new int[1000];
    	int n = 0;
    	int c = 1;
     
    	/**
             * Constructeur
             */
    	public files() {
     
    		try (BufferedReader b = new BufferedReader(new FileReader(new File("D:/taxe.txt")))) {
    			String line;
    			// Lecture du fichier ligne par ligne. Cette boucle se termine
    			// quand la méthode retourne la valeur null.
    			while ((line = b.readLine()) != null) {
     
    				// STOCK LA LIGNE DANS UN BUFFER
    				// String tmp = b.readLine();
     
    				// COUPE LA LIGNE SUIVANT LES ESPACES
    				String[] args = line.split("\\s+");
     
    				// ALLOUE NOTRE TABLEAU DE N ELEMENTS
    				tableau = new int[args.length];
     
    				// COPIE CHAMP A CHAMP + AFFICHAGE
    				for (int i = 1; i < tableau.length; i++) {
     
    					tableau[i] = Integer.parseInt(args[i]);
     
    					System.out.print(tableau[i]);
    					System.out.print(" ");
    					c = c + 1;
    					if (c == 6) {
    						c = 1;
    						System.out.println(" ");
    					}
    					n++;
     
    				}
    				{
    					int t = 0;
    					int indiceTableau = 0;
    					int[] tableauIndiceCherche = new int[tableau.length];
    					int[] tableauIndiceTrouve = new int[tableau.length];
    					for (int i = 0; i < tableau.length - 1; i++) {
     
    						int indiceTrouve = recherche(tableau[i], tableau, i + 1);
    						if (indiceTrouve >= 0) {
    							// par exemple
    							tableauIndiceCherche[indiceTableau] = i;
    							tableauIndiceTrouve[indiceTableau] = indiceTrouve;
    							indiceTableau++; // on passe à la case suivante
    						}
     
    					}
    				}
    			}
    		}
     
    		catch (
     
    		IOException e)
     
    		{
    			// System.out.println("Erreur, le fichier n'existe pas ou est mal
    			// formaté");
    			e.printStackTrace();
    		}
     
    	}
     
    	public static int recherche(int maValeur, int[] tab, int depart) {
    		int monIndice = -1;
    		for (int i = depart; monIndice == -1 && i < tab.length; i++) {
    			if (maValeur == tab[i]) {
    				monIndice = i;
    			}
    		}
    		return monIndice;
    	}
     
    	/**
             * MAIN
             */
    	public static void main(String[] args) {
    		// On lance notre lire fichier
    		new files();
    	}
    }
    En revanche, avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // COPIE CHAMP A CHAMP + AFFICHAGE
    				for (int i = 1; i < tableau.length; i++) {
    la première valeur n'est pas traité de args pour être convertie en int et mise dans le tableau : la case 0 du tableau contiendra donc 0 quelque soit ce qu'il y a dans le fichier. Je te laisse corriger ça.
    Enfin, ton programme va maintenant compiler, mais s'il fonctionne, tu ne verras rien : c'est normal, tu n'affiches aucun résultat à la fin.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Points : 39
    Points
    39
    Par défaut ne t rouve rien
    alors j âi tester mais je crois il y a un bug ...ne affiche aucun valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.print(tableauIndiceTrouve);
    					System.out.print(" ");
    n'affiche jamais rien

    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
    int indiceTableau = 0;
    					int[] tableauIndiceCherche = new int[tableau.length];
    					int[] tableauIndiceTrouve = new int[tableau.length];
    					for (int i = 0; i < tableau.length - 1; i++) {
     
    						int indiceTrouve = recherche(tableau[i], tableau, i + 1);
    						if (indiceTrouve >= 0) {
    							// par exemple
    							tableauIndiceCherche[indiceTableau] = i;
    							tableauIndiceTrouve[indiceTableau] = indiceTrouve;
    							System.out.print(tableauIndiceTrouve);
    					System.out.print(" ")
    							indiceTableau++; // on passe à la case suivante
     
    						}
     
    					}
    donc dans mon tableau[] il y a les chiffre

    12 23 34 45 56 67 78 23 99 12 45 67 34
    donc en premier chiffre 12 se trouve 9 position identique le 12 donc indicetrouve serais 9 est en passe au suivant

    le 23 se trouve position 6 ,indicetrouve 6 est ainsi de suite jusqua fin du tableau fichier..
    merci

  18. #18
    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 : 54
    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
    Citation Envoyé par giovanni Voir le message
    alors j âi tester mais je crois il y a un bug ...ne affiche aucun valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.print(tableauIndiceTrouve);
    					System.out.print(" ");
    n'affiche jamais rien
    Les valeurs s'affichent très bien : simplement, comme il manque un System.out.println() à la fin de l'affichage des valeurs lors de la lecture du fichier, le 9 s'affiche sur la même ligne que le dernier 34.
    Si la première ligne de ton fichier contient bien ces valeurs, le programme affiche les valeurs :
    12 23 34 45 56
    67 78 23 99 12
    45 67 34 9
    7
    12
    10
    11
    Avec un affichage plus significatif, et le retour-chariot ajouté :
    12 23 34 45 56
    67 78 23 99 12
    45 67 34
    Trouve valeur 12 en 0 et 9
    Trouve valeur 23 en 1 et 7
    Trouve valeur 34 en 2 et 12
    Trouve valeur 45 en 3 et 10
    Trouve valeur 67 en 5 et 11
    Donc pas de bug.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Points : 39
    Points
    39
    Par défaut bizzare chez moi rien ne s'affiche
    alors j'ai in serrer e s'affiche rien ..je fais quoi comme erreur?

    j'ai mis a deux endroit aucun affiche?

    au deuxieme si e dis afficher i ..la me donne un affichage

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    package file;
     
    import java.io.*;
    import java.io.File;
    import java.io.FileReader;
     
    public class files {
    	int[] tableau;
    	int[] tableau2 = new int[1000];
    	int[] tableau3 = new int[1000];
    	int[] tableau4 = new int[1000];
    	int n = 0;
    	int c = 1;
     
    	/**
             * Constructeur
             */
    	public files() {
     
    		try (BufferedReader b = new BufferedReader(new FileReader(new File("D:/taxe.txt")))) {
    			String line;
    			// Lecture du fichier ligne par ligne. Cette boucle se termine
    			// quand la méthode retourne la valeur null.
    			while ((line = b.readLine()) != null) {
     
    				// STOCK LA LIGNE DANS UN BUFFER
    				// String tmp = b.readLine();
     
    				// COUPE LA LIGNE SUIVANT LES ESPACES
    				String[] args = line.split("\\s+");
     
    				// ALLOUE NOTRE TABLEAU DE N ELEMENTS
    				tableau = new int[args.length];
     
    				// COPIE CHAMP A CHAMP + AFFICHAGE
    				for (int i = 1; i < tableau.length; i++) {
     
    					tableau[i] = Integer.parseInt(args[i]);
     
    					System.out.print(tableau[i]);
    					System.out.print(" ");
    					c = c + 1;
    					if (c == 6) {
    						c = 1;
    						System.out.println(" ");
    					}
    					n++;
     
    				}
    				{
     
    					int indiceTableau = 0;
    					int[] tableauIndiceCherche = new int[tableau.length];
    					int[] tableauIndiceTrouve = new int[tableau.length];
    					for (int i = 0; i < tableau.length - 1; i++) {
     
    						int indiceTrouve = recherche(tableau[i], tableau, i + 1);
    						if (indiceTrouve >= 0) {
    							// par exemple
    							tableauIndiceCherche[indiceTableau] = i;
    							tableauIndiceTrouve[indiceTableau] = indiceTrouve;
    							System.out.println(i);
    							System.out.println(" ");
    							indiceTableau++; // on passe à la case suivante
     
    						}
     
    					}
    				}
    			}
    		}
     
    		catch (
     
    		IOException e)
     
    		{
    			// System.out.println("Erreur, le fichier n'existe pas ou est mal
    			// formaté");
    			e.printStackTrace();
    		}
     
    	}
     
    	public static int recherche(int maValeur, int[] tab, int depart) {
    		int monIndice = -1;
    		for (int i = depart; monIndice == -1 && i < tab.length; i++) {
     
    			if (maValeur == tab[i]) {
    				System.out.print(tab[i]);
    				System.out.println(" ");
    				monIndice = i;
     
    			}
    		}
    		return monIndice;
    	}
     
    	/**
             * MAIN
             */
    	public static void main(String[] args) {
    		// On lance notre lire fichier
    		new files();
    	}
    }

  20. #20
    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 : 54
    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
    Tu n'as pas lu ce que j'ai écrit.

    1. Ce code :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      // COPIE CHAMP A CHAMP + AFFICHAGE
      for (int i = 1; i < tableau.length; i++) {
      Doit être remplacé par
      ce code :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      // COPIE CHAMP A CHAMP + AFFICHAGE
      for (int i = 0; i < tableau.length; i++) {
      Sinon tu ne décodes pas la première valeur de ton fichier (il n'y aura donc pas de 12 dans tes données)
    2. Après la boucle :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      for (int i = 1; i < tableau.length; i++) {
       
      					tableau[i] = Integer.parseInt(args[i]);
       
      					System.out.print(tableau[i]);
      					System.out.print(" ");
      					c = c + 1;
      					if (c == 6) {
      						c = 1;
      						System.out.println(" ");
      					}
      					n++;
       
      				}
      Tu dois ajouter System.out.println();, sinon ce que tu afficheras après sera sur la même ligne que les derniers nombres affichés par cette boucle


    Maintenant, il n'y a vraiment rien qui s'affiche ? Même pas les valeurs qu'il y a dans le fichier ? C'est ton décodage de fichier alors qui ne va pas. Il est comment exactement ton ficher ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/05/2007, 14h35
  2. [Tableaux] tri sur un tableau multidimensionnel
    Par maysa dans le forum Langage
    Réponses: 3
    Dernier message: 11/04/2007, 08h53
  3. [Tableaux] Tri sur un tableau à 2 dimensions
    Par DrOOMMgba dans le forum Langage
    Réponses: 4
    Dernier message: 03/04/2007, 19h47
  4. [Collection] Tri sur un tableau d'entier
    Par Grand sorcier dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 17/07/2006, 16h07
  5. [Tableaux] tri sur un tableau multi-dimensionnel
    Par nicoaix dans le forum Langage
    Réponses: 1
    Dernier message: 12/04/2006, 21h23

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