Rechercher dans un fichier en Java

Knux14 -  
 Knux14 -
Bonjour,

Ma question est ici puisque l'on ne peut taper deux mots que CCC ne connaît pas sans qu'il y ai de fautes ...
http://dl.dropbox.com/u/7560728/question.html

Merci d'avance.

A voir également:

3 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"on ne peut taper deux mots que CCC ne connaît pas sans qu'il y ai de fautes "

Il faudrait peut-être regarder du côté de ton correcteur orthographique plutôt que d'accuser les sites, ce ne sont pas eux qui gèrent ton navigateur internet !
Et quand bien même il t'afficherait des fautes qui n'en sont pas, ça ne t'empêche pas de poster ton message dans son intégralité, sans avoir à passer par un service tiers d'où tu supprimera la question quand tu le voudras, en annihilant l'intégrité de cette discussion !!!
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Pour lire un fichier, tu peux utiliser la classe Scanner

Scanner sc = new Scanner(new File("monFichier.txt"));
while (sc.hasNextLine())
{
    String ligne = sc.nextLine();
    if(ligne.startsWith(strdeclaredansfonction)
    {
        sc.close();
        return ligne;
    }
}

Remarque : je doute que lire le fichier à chaque fois que tu veux récupérer une donnée soit une bonne solution. L'utilisation d'une Collection (une Map par exemple) serait surement mieux pour contenir les données de ton fichier en mémoire.

Exemple :

TreeMap<String,Point> map = new TreeMap<String,Point>();
Scanner sc = new Scanner(new File("monFichier.txt"));
while (sc.hasNextLine())
{
    String ligne = sc.nextLine();
    try
    {
        String[] tab = lligne.split("=");
        map.add(tab[0],new Point(tab[1],tab[2]));
    }
    catch (Exception e)
    {
        System.err.println(e+"\t"+ligne);
    }
}
sc.close();

// ...

return map.get(strdeclaredansfonction);
La confiance n'exclut pas le contrôle
0
Knux14
 
Puisqu'il n'y aura pas +100 villes sur le serveur, je pense que relire le fichier suffira. Je testerai quand même ton autre solutions quand je serai un peut plus expérimenté en Java (Des erreurs que je ne comprend pas ...)

Merci :D
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
En ce qui concerne les erreurs, je viens de tester, et effectivement je suis allé un peu vite en tapant :

import java.awt.geom.Point2D;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.TreeMap;

// ...

TreeMap<String,Point2D.Double> map = new TreeMap<String,Point2D.Double>();

// ...

Scanner sc = new Scanner(new File("monFichier.txt"));
while (sc.hasNextLine())
{
    String ligne = sc.nextLine();
    try
    {
        String[] tab = ligne.split("=");
        map.put(tab[0],new Point2D.Double(Double.parseDouble(tab[1]), Double.parseDouble(tab[2])));
    }
    catch (Exception e)
    {
        System.err.println(e+"\t"+ligne);
    }
}
sc.close();

// ...

return map.get(strdeclaredansfonction);
0
Knux14
 
Ok merci, je teste sa en rentrant :D
0
Knux14
 
Map me revoit une variable de type double, sa correspond à quoi ? Sa place dans la liste comme un tableau ?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Attention ! Ce n'est pas un java.lang.Double, mais un java.awt.geom.Point2D.Double.
C'est donc directement tes coordonnées, que tu peux manipuler avec les méthodes getX() et getY()
Pour éviter les confusions il vaut mieux faire comme je l'ai fait et déclarer Point2D.Double.

Point2D.Double coord = map.get(nomVille);
System.out.println(coord.getX());
System.out.println(coord.getY());
0
Knux14
 
Cela ne marche pas, mais bon pas grave, je reste avec la première méthode le temps d'apprendre le java.
0