Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2155 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Compter nombre de fois caractère dans un tableau

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] Compter nombre de fois caractère dans un tableau

n°2160490
justbam
All Your Base Are Belong To Us
Posté le 17-10-2012 à 16:45:15  profilanswer
 

Bonjour,

 

Je dispose d'un tableau contenant des string de ce type :

 

"0,3"
"2,4"
"1,8"
"7,4"
"0,2"
"1,9"
"9,0"

 

Je voudrais compter le nombre de fois que revient chaque nombre avant ou après la virgule

 

Donc dans notre exemple il y a 3x le nombre 0 , 2x le nombre 1 ...

 

Et je voudrais récupérer combien de fois revient chaque nombre.
Pour stocker chaque nombre dans un tableau  :

 

0 / 1 / 2 / 3 / ... / n               <----- Numero case tableau
3 / 2 / 2 / 1 / ... / n              < ----- Nombre de fois que revient le nombre correspondant au numéro de la case du tableau

 

La méthode nous retourne donc un tableau de int ( int [] )
Pensez-vous que cela soit possible et si oui je veux bien une piste de solution ?

 

Merci d'avance de votre aide.


Message édité par justbam le 17-10-2012 à 16:47:08

---------------
▼ [ACH/VDS] ▼
mood
Publicité
Posté le 17-10-2012 à 16:45:15  profilanswer
 

n°2160491
KLeMiX
Laisse pas trainer ton site
Posté le 17-10-2012 à 17:28:44  profilanswer
 

J'ai pas la solution mais un conseil, prévoit un test avec 9,9 par exemple


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2160657
willy le k​id
Posté le 18-10-2012 à 14:44:31  profilanswer
 

On peut discuter si il vaut mieux mettre des Tokenizer ou des startsWith ou des endsWith ...
J'ai essayé de raccourcir les boucles avec found1 found 2...
Tout cela est optimisable...
 

Code :
  1. public class CompteurOccurenceApp {
  2. static String[] tableau = { "0,3", "2,4", "1,8", "7,4", "0,2", "1,9", "9,0", "9,9" };
  3. /**
  4.  * @param args
  5.  */
  6. public static void main(String[] args) {
  7.  int longueur = tableau.length;
  8.  String chaine;
  9.  boolean found1, found2;
  10.  //contiend les résultats de 0 à 9
  11.  int[] resultat = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 
  12.  for ( int i =0; i< longueur; i++ ){
  13.   chaine = tableau[i];
  14.   found1 = found2 = false;
  15.   System.out.println(chaine);
  16.   for (int j =0; j < 10; j++){
  17.    if ( chaine.startsWith(j+"," ) ){
  18.     resultat[j]++;
  19.     System.out.println(j + " détecté en début" );
  20.     found1=true;
  21.    }
  22.    if ( chaine.endsWith(","+j) ){
  23.     resultat[j]++;
  24.     System.out.println(j + " détecté en fin" );
  25.     found2=true;
  26.    }
  27.    if ( found1 && found2 ){
  28.     System.out.println(j+" : debut et fin détecté, break" );
  29.     break;
  30.    }
  31.   }
  32.  }
  33.  System.out.println("--- Résultat ---" );
  34.  for (int j =0; j < 10; j++){
  35.    System.out.println(j + " apparait " + resultat[j] + " fois" );
  36.  }
  37. }
  38. }


Message édité par willy le kid le 18-10-2012 à 14:47:13
n°2160663
justbam
All Your Base Are Belong To Us
Posté le 18-10-2012 à 15:41:00  profilanswer
 

merci de la réponse c'est plus ou moins ce que j'ai utilisé cela me conforte dans mon choix.
 
Il faut également que j'optimise un peu tout cela et ce sera parfait.
 
Merci bien de ta réponse ;)


---------------
▼ [ACH/VDS] ▼
n°2161111
liouan
Posté le 23-10-2012 à 17:06:50  profilanswer
 

Pour décoder le contenu, String.split(String) est très utile
 
"0,3".split("," ) retourne un tableau contenant {"0" , "3" )
"0,3".split("," )[0] = 0
"0,3".split("," )[1] = 3
 
Ensuite, pour stocker les occurrences, la structure la plus adaptée est clairement la HashMap.
En clé, tu mets le nombre pour lequel tu comptes les occurrences et en valeur, tu mets le nombre d'occurrences.
 
Voici un exemple vite fait:
 

Code :
  1. public static void main(String[] args) {
  2.  String[] tableau = { "0,3", "2,4", "1,8", "7,4", "0,2", "1,9", "9,0", "9,9" };
  3.  // HashMap pour stocker les occurences
  4.  HashMap<Integer, Integer> occ = new HashMap<Integer, Integer>();
  5.  for (String s : tableau) {
  6.   // Conversion en entier...
  7.   int x = Integer.valueOf(s.split("," )[0]);
  8.   int y = Integer.valueOf(s.split("," )[1]);
  9.   // Si la valeur x n'y est pas, on la met avec un compteur à 0
  10.   if (occ.get(x) == null) {
  11.    occ.put(x, 0);
  12.   }
  13.   // Puis on incrémente
  14.   occ.put(x, occ.get(x) + 1);
  15.   // Si la valeur y n'y est pas, on la met avec un compteur à 0
  16.   if (occ.get(y) == null) {
  17.    occ.put(y, 0);
  18.   }
  19.   // Puis on incrémente
  20.   occ.put(y, occ.get(y) + 1);
  21.  }
  22.  for(Entry<Integer,Integer> entry:occ.entrySet()){
  23.   System.out.println(entry.getKey()+" est présent "+entry.getValue()+" fois" );
  24.  }
  25. }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Compter nombre de fois caractère dans un tableau

 

Sujets relatifs
Parser SGML en JavaHTML5 Video -> Nombre de vue
tableau statique : forcer l'allocation ? [Résolu]Changer un element d'un tableau
[HTML5] Quels outils pour une interface graphique d'un programme JAVA?[JAVA+ HTML5] quelle API utiliser pour la génération de code HTML5 ?
Erreur java.lang.StackOverflowError awk et le caractere spécial *
Tableau dynamiqueJava JAIN-SIP + enregistrement
Plus de sujets relatifs à : [JAVA] Compter nombre de fois caractère dans un tableau


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR