Question sur la longueur d'une ligne avec un readLine()
Bonjour tout le monde,
J'ai une question tout bête:
J'ai un petit programme qui permet de lire, ligne par ligne, le contenu d'un fichier txt.
Ce dernier enregistre la ligne active dans une variable.
Ensuite, il lit la ligne et extrait les chiffres qui sont avant le séparateur (;) exemple :
ligne 1:
4;5;56
il extrait 4;
il me reste ensuite 5;56
là, quand je fais un System.out.println(ligne.length()) il me donne 3, est-ce par ce que la numérotation commence à zéro ?
Voici le code en entier :
Merci d'avance pour votre aide.
beegees
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| import java.io.*;
public class CorrectionParPhilippe
{
// Faire fichier avec différents chiffres séparés par un ; comme ci dessous,
// p.ex : 12;4;7
public static void main(String[]args) throws IOException
{
int positionSeparateur;
String sNombre;
//String ligne="12;4;7";
String ligne="";
int nombre;
char separateur=';';
int longueur;
int somme=0;
//on donc besoin de trois choses pour lire dans un fichier :
//1) le filereader
//2) le bufferedReader
//3) close
//attention : on a besoin aussi d'un readLine(), ce readLine est une méthode
//du buffered
FileReader fic= new FileReader("C:\\somme.txt");
//Lecture de la premiere ligne
BufferedReader fichier=new BufferedReader(fic);
ligne=fichier.readLine();
System.out.println("Lecture du fichier :");
//tant que ligne (c'est à dire la ligne active du fichier txt) est différente
//de rien
while(ligne !=null)
{
//on donne la longueur de la ligne à la variable longueur
longueur=ligne.length();
//tant que longueur est supérieur à Zéro car :
//si j'ai cette ligne : 7;12;9 la longueur est de 6, quand j'aurais passé
//une première fois, on prend 7 et ; il nous reste alors 12;9, vue que l'on
//commence à zéro, on a encore 3 caractères (0,1,2,3 --> 12;9)
while(longueur>0)
{
positionSeparateur=ligne.indexOf(separateur);
if (positionSeparateur>0)
{
sNombre=ligne.substring(0,positionSeparateur);
ligne=ligne.substring(positionSeparateur+1);
}
else
{
sNombre=ligne;
ligne="";
}
System.out.println(sNombre);
nombre=Integer.parseInt(sNombre);
somme+=nombre;
longueur=ligne.length();
System.out.println("la longueur " + longueur);
}
//Lecture de la ligne suivante
ligne=fichier.readLine();
}
System.out.println("=================");
System.out.println("Total = "+somme);
fichier.close();
}
} |