mimihh
Messages postés27Date d'inscriptionsamedi 31 décembre 2011StatutMembreDernière intervention 8 février 2014
-
4 déc. 2013 à 03:10
KX
Messages postés16703Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention 1 juin 2023
-
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());
KX
Messages postés16703Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention 1 juin 2023126 4 déc. 2013 à 07:54
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++;