Rechercher dans un fichier en Java

Fermé
Knux14 - Modifié par kaneagle le 17/06/2012 à 13:28
 Knux14 - 17 juin 2012 à 17:24
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 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
17 juin 2012 à 14:14
"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 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
Modifié par KX le 17/06/2012 à 14:25
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
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 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
17 juin 2012 à 15:01
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
Ok merci, je teste sa en rentrant :D
0
Map me revoit une variable de type double, sa correspond à quoi ? Sa place dans la liste comme un tableau ?
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
Modifié par KX le 17/06/2012 à 17:15
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
Cela ne marche pas, mais bon pas grave, je reste avec la première méthode le temps d'apprendre le java.
0