Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

probleme String



  1. #1
    ABN84

    Arrow probleme String


    ------

    bonjour,
    je suis confronté à deux problemes avec java.
    j'ai un fichier dont le contenu est le suivant:
    $MeshFormat
    2 0 8
    $EndMeshFormat
    $Nodes
    410
    1 -20 20 5
    2 20 20 5
    3 20 25 5
    4 -20 25 5
    5 25 -20 5
    [...]
    391 20 0 50
    392 20 10 50
    393 -10 20 45
    394 0 20 45
    395 10 20 45
    396 10 20 50
    397 0 20 50
    398 -10 20 50
    399 -20 -10 45
    400 -20 0 45
    401 -20 10 45
    402 -20 10 50
    403 -20 0 50
    404 -20 -10 50
    405 10 -20 45
    406 0 -20 45
    407 -10 -20 45
    408 -10 -20 50
    409 0 -20 50
    410 10 -20 50
    $EndNodes
    $Elements
    910
    1 15 2 0 1 1
    2 15 2 0 2 2
    3 15 2 0 3 3
    4 15 2 0 4 4
    5 15 2 0 5 5
    6 15 2 0 6 6
    7 15 2 0 7 7
    8 15 2 0 8 8
    9 15 2 0 9 9
    10 15 2 0 10 10
    11 15 2 0 11 11
    12 15 2 0 12 12
    13 15 2 0 13 13
    14 15 2 0 14 14
    [...]
    895 2 3 0 22 0 402 401 400
    896 2 3 0 22 0 121 120 401
    897 2 3 0 23 0 124 407 125
    898 2 3 0 23 0 405 123 410
    899 2 3 0 23 0 405 410 406
    900 2 3 0 23 0 407 406 408
    901 2 3 0 23 0 407 408 125
    902 2 3 0 23 0 406 410 409
    903 2 3 0 23 0 406 409 408
    904 2 3 0 23 0 123 126 410
    905 2 3 0 24 0 128 127 130
    906 2 3 0 24 0 128 130 129
    907 2 3 0 25 0 131 134 132
    908 2 3 0 25 0 134 133 132
    909 2 3 0 26 0 138 137 136
    910 2 3 0 26 0 138 136 135
    $EndElements
    la partie qui m'interresse est celle comprise entre $NODES et $ENDNODES.
    il s'ajit de coordonnées de points. le premier nombre de chaque ligne donne le numero du point et les trois nombres qui suivent donnent les coordonnées x,y,z.
    j'ai donc fait ceci pour lire le fichier ligne par ligne
    Code:
    try {
        FileReader fr = new FileReader("geometry.msh");
        BufferedReader br = new BufferedReader(new FileReader("geometry.msh"));
            while (( line = br.readLine()) != null){
                for (int l=0;l<800;l++)
                msh1=msh1+" "+line;
            }
        } 
    catch (IOException ex) {
        ex.printStackTrace();
    ce qui me met tout le texte dans une variable string, pas tres utilie telle quelle.
    je voudrais faire ceci:
    à chaque fois que je lis une "line", il faudrait identifier si elle est comrise entre $node et $endnode ou non, si oui on ne prends pas encompte le premier numero (c'est juste un index) et on prends chacun des 3 autres string restants et on les change en double (parse.double) et on les met dans un tableau (double [][] msh) de dimension 3x1000, la premiere valeur à la 1ere colonne, la 2eme à la 2eme et la 3eme à la 3eme. et à chaque iteration on refait la meme chose avec à chaque fois une nouvelle ligne.
    à la fin ce que je veux obtenir à partir de ce fichier c'est un double [][] msh (3x1000) qui ne contiendrait que les coordonnées x, y, et z de tous les pts.

    le deuxieme probleme concerne les BD. j'ai dans ma classe un tableau de double de dimension 6, et un string qui lui est lié
    je voudrais dans un action performed d'un jbutton, enregistrer le string et le double[] dans un fichier de base de donnée. le format du fichier m'importe peu (xls, xml,sql...) mais il doit etre bien definit.
    l'enregistrement se fait comme suit: le string se met dans la colonne 1 de la BD et les 6 valeurs du double[] dans les colonnes 2-7. biensur si il y a deja qqch d'enregistré dans le fchier de BD, le string et le double[] doivent se mettre apres la dernier ligne existante dans le fichier. auriez vous un exemple de classes dont je pourrais m'inspirer qui pourrait repondre à mes besoin? sinon pourriez vous m'expliquer comment faire?

    merci

    -----
    "Engineering is the art of making what you want from what you get"

  2. #2
    Aneldo

    Re : probleme String

    Bonjour,

    Dans un premier temps, plutot que de faire
    Code:
    while (( line = br.readLine()) != null){
        for (int l=0;l<800;l++)
            msh1=msh1+" "+line;
    }
    tu peux faire :
    Code:
    while (( line = br.readLine()) != null) {
        if(line.equalsIgnoreCase("$Nodes")) {
            while (( line = br.readLine()).equalsIgnoreCase("$EndNodes") ) {
                msh1=msh1+" "+line;
           }
        }
    }
    cela te permet de ne traiter que les lignes comprises entre $Nodes et $EndNodes


    Ensuite pour traiter les valeurs, je te conseil de faire un nouvel objet (point3D) et tu feras une liste d'objet de plus en plus grande lors du parsing du fichier.

    donc a la place de
    Code:
    msh1=msh1+" "+line;
    fait un truc du genre :
    Code:
    //parsing de la ligne : on separe la ligne en un tableau de String suivant le caractere " "
    String [] s = line.split(" ");
    //creation d'un point3D
    point3D p = new point3D(Integer.parseInt(s[1]), Integer.parseInt(s[2]), Integer.parseInt(s[3]));
    //ajout du point3D a la liste de point à l'emplacement voulut (premier nombre de la ligne)
    listOfPoint3D.add(p, Integer.parseInt(s[0]));
    voici comment declarer une liste :
    Code:
    List listOfPoint3D = new ArrayList();

Discussions similaires

  1. Decomposer une "string" en Maple
    Par dimofzion dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 08/06/2007, 19h18
  2. String c
    Par sahdow dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 13/03/2007, 05h11
  3. rescapées des vacances: dentelles du string, dumbell (300d+merguez)
    Par astroJB dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 12
    Dernier message: 03/09/2006, 20h20
  4. [String Theory] Lien interessant
    Par BioBen dans le forum Physique
    Réponses: 1
    Dernier message: 08/03/2006, 18h31
  5. cosmic string
    Par koyote dans le forum Archives
    Réponses: 11
    Dernier message: 01/02/2006, 12h37
Découvrez nos comparatifs produits sur l'informatique et les technologies.