Recuper données txt avec java

Fermé
deldiaze - 25 déc. 2009 à 17:50
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 - 29 déc. 2009 à 11:54
Bonjour,
je suis un débutant en java et je voudrais récuperer des données du type [string][double][bouble]
à partir d'un fichier texte pour les mettre dans un tableau,mon fichier fait envirron 500 lignes et chaque ligne contient trois données séparées par des espaces,avez vous une idée sur comment faire ça avec une arraylist,

merci.
A voir également:

15 réponses

chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
25 déc. 2009 à 18:49
Salut,
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.*;
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws FileNotFoundException {
            ArrayList ar=new ArrayList(500);
            BufferedReader lecteurAvecBuffer = new BufferedReader(new FileReader("c:\\temp\\montest.txt"));//cree un reader sur ton fichier
            try {
                while (lecteurAvecBuffer.ready()) {//tant que j'ai des lignes
                    String[] m=lecteurAvecBuffer.readLine().split(" ");//je lis la ligne et je la decoupe, pour avoir mes 3 parametres
                    monObj ob=new monObj(m[0], m[1], m[2]);//je cree un obj qui stocke les datas précedemment recupérés
                    ar.add(ob);//je met le tout dans un arraylist
                }

            } catch (IOException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
            for(int i=0;i<ar.size();i++) //verification avec un apercu sur la console
            {
                monObj oj=(monObj)ar.get(i);//recuperation dans l'arraylist de l'objet monObj
                System.out.println(oj.getObj()[0]+" "+oj.getObj()[1]+" "+oj.getObj()[2]);//affichage
            try {
                Thread.sleep(500);
            } catch (InterruptedException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
            }
        }

}
class monObj{
    Object[] obj;
    public monObj(Object ent,Object ent1,Object ent2)
    {
        obj=new Object[3];
        obj[0]=ent;
        obj[1]=ent1;
        obj[2]=ent2;
    }
    public Object[] getObj()
    {
        return obj;
    }
}

J'espere ca pourra t'aider!!
@+
0
les instructions qui posent problème:
ar.add(ob);
monObj oj=(monObj)ar.get(i);

message d'erreur:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method add(String) in the type ArrayList<String> is not applicable for the arguments (Main.monObj)
Cannot cast from String to Main.monObj

at modele.Main$monObj.main(Main.java:53)

ensuite pour ma part j'ai changer arraylist en arraylist<String>

Cordialement
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
26 déc. 2009 à 09:25
Salut,
En effet si tu imposes un type pour l'arraylist, il va pas être d'accord le compilo...;)
Apres tout depend de ce que tu veux faire!!
Si c'est juste mettre les 500 lignes dans un arraylist alors, pas besoin de monObj et tu peux faire un truc direct du style:
ArrayList<String> ar=new ArrayList(500);
BufferedReader lecteurAvecBuffer = new BufferedReader(new FileReader("c:\\temp\\montest.txt"));//cree un reader sur ton fichier
try {
while (lecteurAvecBuffer.ready()) {//tant que j'ai des lignes
ar.add(lecteurAvecBuffer.readLine());//je met le tout dans un arraylist
}
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
Apres c'est toi qui voit ce que tu veux faire après avec les données récupérées!!
@+

0
je veux récuperer les données et les classer dans un tableau de sorte à pouvoir les utiliser aprés en faisant un parcours,mais c'est parce que j'ai les instructions citées plus haut qui poseent probleme que j'ai donné un type à arraylist aussi pourquoi ar.add() fonction pas,

merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
voici le code compilé/**
*
*/
package modele;

import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;


import java.io.BufferedReader;

import java.io.FileReader;
import java.io.IOException;

import java.util.ArrayList;


class monObj{
Object[] obj;
public monObj(Object ent,Object ent1,Object ent2)
{
obj=new Object[3];
obj[0]=ent;
obj[1]=ent1;
obj[2]=ent2;
}
public Object[] getObj()
{
return obj;
}
}
public class Main {





/**
* @param args the command line arguments
*/

public static void main(String[] args) throws FileNotFoundException {
ArrayList<monObj> ar=new ArrayList<monObj>(500);
BufferedReader lecteurAvecBuffer = new BufferedReader(new FileReader("c:\\Users\\test.txt"));//cree un reader sur ton fichier
try {
while (lecteurAvecBuffer.ready()) {//tant que j'ai des lignes
String[] m=lecteurAvecBuffer.readLine().split(" ");//je lis la ligne et je la decoupe, pour avoir mes 3 parametres
monObj ob=new monObj(m[0], m[1], m[2]);//je cree un obj qui stocke les datas précedemment recupérés
ar.add(ob);//je met le tout dans un arraylist
}

} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
for(int i=0;i<ar.size();i++) //verification avec un apercu sur la console
{
monObj oj=ar.get(i);//recuperation dans l'arraylist de l'objet monObj
System.out.println(oj.getObj()[0]+" "+oj.getObj()[1]+" "+oj.getObj()[2]);//affichage
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

}


et voilà le message d'erreur: java.lang.NoClassDefFoundError: modele/Main$monObj
Caused by: java.lang.ClassNotFoundException: modele.Main$monObj
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Exception in thread "main"

AUssi j'ai créé une arrayliste de type monobjet
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
26 déc. 2009 à 11:35
Salut,
Comment s'appelle ton fichier où tu as la class Main?? Il se nomme bien Main.java?
0
Salut
Mon fichier c'est test.j'ai créé un package ou j'ai mis la class Main.java
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
26 déc. 2009 à 12:06
Si j'ai bien compris, ton package s'appelle Modele.
Tu as un fichier qui se nomme test.java dans lequel tu as mis le code si dessus??
Si c'est cela, normalement cela devrait resoudre le prb...:
package modele;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;


import java.io.BufferedReader;

import java.io.FileReader;
import java.io.IOException;

import java.util.ArrayList;
/**
*

*/
class monObj{
Object[] obj;
public monObj(Object ent,Object ent1,Object ent2)
{
obj=new Object[3];
obj[0]=ent;
obj[1]=ent1;
obj[2]=ent2;
}
public Object[] getObj()
{
return obj;
}
}
public class test {





/**
* @param args the command line arguments
*/

public static void main(String[] args) throws FileNotFoundException {
ArrayList<monObj> ar=new ArrayList<monObj>(500);
BufferedReader lecteurAvecBuffer = new BufferedReader(new FileReader("c:\\Temp\\test.txt"));//cree un reader sur ton fichier
try {
while (lecteurAvecBuffer.ready()) {//tant que j'ai des lignes
String[] m=lecteurAvecBuffer.readLine().split(" ");//je lis la ligne et je la decoupe, pour avoir mes 3 parametres
monObj ob=new monObj(m[0], m[1], m[2]);//je cree un obj qui stocke les datas précedemment recupérés
ar.add(ob);//je met le tout dans un arraylist
}

} catch (IOException ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
for(int i=0;i<ar.size();i++) //verification avec un apercu sur la console
{
monObj oj=ar.get(i);//recuperation dans l'arraylist de l'objet monObj
System.out.println(oj.getObj()[0]+" "+oj.getObj()[1]+" "+oj.getObj()[2]);//affichage
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

}
@+
0
Bonjour,
au fait j'ai procédé comme suit:
j'ai créé un nouveau projet genre mon projet;
ensuite dans ce projet j'ai créé un package;
dans ce package j'ai mis mon comme dans un Main;

peut etre qu'il ne reconnait pas mon fichier test,le soucis c'est qu'il n'y pas d'erreur dans le code ,afin je pense

merci
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
26 déc. 2009 à 13:13
Salut,
j'ai fais comme toi:
Creation d'un projet->MonProjet;
Creation d'un package dans ce projet ->model avec un fichier maclass.java avec le code si dessous:
package model;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;


import java.io.BufferedReader;

import java.io.FileReader;
import java.io.IOException;

import java.util.ArrayList;
/**
*

*/
class monObj{
Object[] obj;
public monObj(Object ent,Object ent1,Object ent2)
{
obj=new Object[3];
obj[0]=ent;
obj[1]=ent1;
obj[2]=ent2;
}
public Object[] getObj()
{
return obj;
}
}
public class maclass {

String Path;
ArrayList<monObj> ar=new ArrayList<monObj>(500);
public maclass(String Path)
{
this.Path=Path;
}
public ArrayList GetArrayList()
{
return ar;
}
public void afficheResultat()
{
for(int i=0;i<ar.size();i++) //verification avec un apercu sur la console
{
monObj oj=ar.get(i);//recuperation dans l'arraylist de l'objet monObj
System.out.println(oj.getObj()[0]+" "+oj.getObj()[1]+" "+oj.getObj()[2]);//affichage
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
Logger.getLogger(maclass.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

/**
* @param args the command line arguments
*/

public void TraiteFichier() throws FileNotFoundException
{

BufferedReader lecteurAvecBuffer = new BufferedReader(new FileReader(Path));//cree un reader sur ton fichier
try {
while (lecteurAvecBuffer.ready()) {//tant que j'ai des lignes
String[] m=lecteurAvecBuffer.readLine().split(" ");//je lis la ligne et je la decoupe, pour avoir mes 3 parametres
monObj ob=new monObj(m[0], m[1], m[2]);//je cree un obj qui stocke les datas précedemment recupérés
ar.add(ob);//je met le tout dans un arraylist
}

} catch (IOException ex) {
Logger.getLogger(maclass.class.getName()).log(Level.SEVERE, null, ex);
}

}

}
dans le projet, j'ai un fichier principal nommé main.java avec le code ci dessous:
package monprojet;
import java.io.FileNotFoundException;
import model.*;
/**
*

*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException {
// TODO code application logic here
maclass tr=new maclass("c:\\Temp\\test.txt");
tr.TraiteFichier();
tr.afficheResultat();
}

}
et llà j'ai d'erreur!!
dis moi si cela resoud ton prb!!
@+
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
26 déc. 2009 à 13:34
Bonjour,

Je ne connais pas Java, que de nom bien sûr.
L’énoncé me paraissait simple... et je vois un code qui prend des lignes et des lignes, avec des imports préalables nombreux. C’est ça un programme Java ??!!
C’est un peu effarant...... ça ne donne pas envie.....
0
merci à tous ,

j'ai fait comme tu as dis mais j'ai ceci comme message
java.lang.NoClassDefFoundError: modele/Main$monObj
Caused by: java.lang.ClassNotFoundException: modele.Main$monObj
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)

est ce que vous de votre coté vous avez essayer de compiler ce même code pour voir ce que ça donne chez vous.
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
26 déc. 2009 à 16:53
Salut,
chez moi, il marche bien....je seche un peu là...
Mais y'a un truc bizarre...le nom du fichier s'appelle maclass et la l'erreur est sur model/Main....
Le fichier dans le package model s'appelle bien maclass.java?? et la class à l'interieur s'appelle bien maclass et pas Main??
0
bonjour ,

quelqu'un a une idée sur comment récupérer ces données ,je m'explique dans la première case du tableau il y'a une donnéee de type string dans les deux autres cases du tableau deux données de type de integer,je voulais savoir si c'est possible de recuperer pour chaque données string les deux int qui le suivent ,par une methode get()
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
29 déc. 2009 à 11:54
En Python, ça se fait comme qui rigole en deux coups de cuiller à pots.

Je vois que dans d'autres langages , c'est la java des instructions....
0