Compter le nombre de 1 dans une ligne

Compter le nombre de 1 dans une ligne - Java - Programmation

Marsh Posté le 04-12-2013 à 03:14:38    

Bonsoir,
j'ai un fichier contenant dans chaque ligne plusieurs caractères et un nombre inconnu de "1" je voulais calculer le nombre de 1 dans chaque ligne. Pour cette raison, j'ai mis le contenu de mon fichier dans une liste contenant une ligne dans chaque élément. en comptant le nombre de 1 dans chaque ligne, le résultat obtenus est incorrecte j'obtiens en fait, des nombres très élèves pour chaque ligne. Pouvez vous m'aidez pour détecter l'erreur?
voici mon code:

Code :
  1. public static void main(String[] args) throws Exception {
  2.      List<String> list1 = new ArrayList<String>();
  3.      List<String> list2 = new ArrayList<String>();
  4.      int nb=0;
  5.         File f = new File("file.txt" );
  6.         FileReader fr = new FileReader(f);
  7.         BufferedReader br= new BufferedReader(fr);
  8.         String ligne = "";
  9.         ligne=br.readLine();
  10.         int i=0;
  11.         while(ligne!=null)
  12.         {
  13.             list1.add(ligne.toString());
  14.             ligne=br.readLine();
  15.             i++;
  16.         }
  17.         nb=0;
  18.         br.close();
  19.         for(i=0;i< list1.size();i++){
  20.           if (list1.get(i).contains("1" )){
  21.               nb++;
  22.         System.out.println(nb); }
  23.         }
  24. }

Reply

Marsh Posté le 04-12-2013 à 03:14:38   

Reply

Marsh Posté le 04-12-2013 à 08:52:50    

Bonjour,
 
La méthode contains (http://docs.oracle.com/javase/7/do [...] equence%29) renvoie true si et seulement si le string contient la séquence spécifique de caractères. Si dans la ligne il y un seul 1 ou dix, la méthode renverra true.
 
A priori vous parcourez la liste des lignes et incrémentez une variable si la ligne contient un 1. Il faudrait en plus parcourir chaque ligne pour compter le nombre de 1, cf http://stackoverflow.com/a/275969.
Une autre solution plus simple à mettre en œuvre est d'enlever tous les 1 d'une ligne et de regarder la différence de taille avant/après.
 

Code :
  1. BufferedReader bufferedReader = null;
  2.  try {
  3.   String sCurrentLine;
  4.   bufferedReader = new BufferedReader(new FileReader("file.txt" ));
  5.   int numLine = 0;
  6.   while ((sCurrentLine = bufferedReader.readLine()) != null) {
  7.    int count = sCurrentLine.length() - sCurrentLine.replace("1", "" ).length();
  8.    System.out.println(numLine + " ) ==> " + count);
  9.    numLine++;
  10.   }
  11.  } catch (IOException e) {
  12.   e.printStackTrace();
  13.  } finally {
  14.   try {
  15.    if (bufferedReader != null) bufferedReader.close();
  16.   } catch (IOException ex) {
  17.    ex.printStackTrace();
  18.   }
  19.  }


 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed