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
- 4 déc. 2013 à 03:10 - Dernière réponse :
Messages postés
15827
Date d'inscription
samedi 31 mai 2008
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 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
15827
Date d'inscription
samedi 31 mai 2008
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 4 déc. 2013 à 07:54
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++;

Merci KX 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes 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.