Compter le nombre de 1 dans une ligne [Résolu]

Messages postés
27
Date d'inscription
samedi 31 décembre 2011
Statut
Membre
Dernière intervention
8 février 2014
- - Dernière réponse : KX
Messages postés
16089
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 décembre 2019
- 4 déc. 2013 à 07:54
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:


public static void main(String[] args) throws Exception {
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
int nb=0;

File f = new File("file.txt");
FileReader fr = new FileReader(f);
BufferedReader br= new BufferedReader(fr);
String ligne = "";

ligne=br.readLine();
int i=0;
while(ligne!=null)
{
list1.add(ligne.toString());

ligne=br.readLine();
i++;
}
nb=0;
br.close();
for(i=0;i< list1.size();i++){
if (list1.get(i).contains("1")){
nb++;
System.out.println(nb); }
}
}
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
16089
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 décembre 2019
88
1
Merci
Pourquoi tu stockes l'intégralité des données de ton fichier ?
Si tu veux juste connaître le nombre de 1 de chaque ligne, alors tu prends une ligne, tu comptes le nombre de 1, tu oublies la ligne et tu passes à la suivante, pas besoin de tout stocker...

for(i=0;i< list1.size();i++){ 
    if (list1.get(i).contains("1")){ 
        nb++;

Ceci regarde uniquement si la ligne contient au moins un 1, s'il y en a plusieurs on en comptera toujours qu'un seul.
Pour compter le nombre de 1 de la ligne il faut parcourir toute la chaîne de caractères.

while ((ligne=br.readLine())!=null)
    for (int i=0; i<ligne.length(); i++)
        if (ligne.charAt(i)=='1')
            nb++;

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 209 internautes nous ont dit merci ce mois-ci

Commenter la réponse de KX