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

Messages postés
27
Date d'inscription
samedi 31 décembre 2011
Dernière intervention
8 février 2014
- - Dernière réponse : KX
Messages postés
15918
Date d'inscription
samedi 31 mai 2008
Statut
Contributeur
Dernière intervention
20 janvier 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 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
15918
Date d'inscription
samedi 31 mai 2008
Statut
Contributeur
Dernière intervention
20 janvier 2019
3628
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 89 internautes nous ont dit merci ce mois-ci

Commenter la réponse de KX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.