J'ai lu en diagonal les messages et il y a des trucs qui me turlupine...
1) Dans ParseFile() items est déclaré mais jamais alloué.
ArrayList<Achat> items = new ArrayList<Achat>();
2) La boucle devrait alors s'écrire:
for(Achat achat:items){...}
3) Mais çà ne marcherais PAS parcequ'elle est vide !
Ce bloc for(Achat achat:items) ne sert à rien...
Si chaque ligne lue est un achat, alors ce sont les lignes lues qu'il faut splitter (et pas les items).
La liste des items c'est ton résultat.
4) Si le but est de remplir cette liste avec les éléments "achats de clients"
(ici les objets de type Achat) et si chaque achat est une ligne...
tu devrais avoir un truc du style:
1 2 3 4 5 6 7 8
|
splitter = new StringTokenizer(line, " ");
if (splitter.hasMoreTokens()) {
client = Integer.parseInt(splitter.nextToken());;
article = Integer.parseInt(splitter.nextToken());
prix = Integer.parseInt(splitter.nextToken());
items.add(new Achat(client,article,prix));
} |
5) Une autre remarque:
Conventionellement (mais c'est important en JAVA) le nom des propriétés et des méthodes commencent par une lettre minuscule. Le nom des classes commencent par une lettre majuscule.
On donc peu déclarer :
Article article; /* ma variable "article" de classe "Article" */
Article getArticle(){...}; /* getter de l'article */
Mais JAMAIS l'inverse (les programmes deviennent illisibles)
Partager