Comment lire des coordonnées de points à partir d'un fichier en java et les affi

anouarch Messages postés 4 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 7 mai 2007 - 4 mai 2007 à 11:35
anouarch Messages postés 4 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 7 mai 2007 - 7 mai 2007 à 15:03
Bonjour, Est ce qu'une âme charitable peut m'aider pour créer un code source en java permettant de lire des distances entre un ensemble de villes (points)  à partir d'un fichier et les afficher dans une fenêtre plot, les données dans le fichier concerné sont détaillées ci-dessous.  Une aide de votre part mais beaucoup utile.merci infiniment en avance!!!
     (anouar_ch@hotmail.fr)

Rq: les données du fichier sont comme suit: (le 1er nombre c'est la ville i, le 2ème c'est la ville j, le 3ème c'est la distance entre i et j): exemple:
1 2 23
1 3 23
1 4 23
1 5 23
1 6 23
1 7 23
1 8 23
2 1 10
2 3 40
2 4 40
2 5 40
2 6 40
2 7 40
2 8 40
etc... jusqu'à la ville 8

9 réponses

psyckachu Messages postés 1 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 4 mai 2007
4 mai 2007 à 14:00
En ce qui concerne la lecture dans le fichier :

BufferedReader br = new BufferedReader(new FileReader(filename));
String nextLine = "";
int ville1,ville2,distance;
   StringBuffer sb = new StringBuffer();
   while ((nextLine = br.readLine()) != null) {
     String[] temp = nextLine.split(" ");
     ville1 = temp[0];
     ville2 = temp[1];
     distance temp[2];
   }
0
anouarch Messages postés 4 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 7 mai 2007
4 mai 2007 à 16:58
     Je te remercie tout d'abord pour ta réponse si rapide , j'ai essayé ton code et, lors de la compilation il y a des erreurs au niveau de l'attribution des données aux variables ville1, ville2 et distance, l'erreur est la même "Type mismatch: cannot convert from String to int".
     aussi pour le fichier, est ce que je dois préciser le chemin ou le copier sous notre package du programme?
      Merci Psyckachu!!!
 
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 39
4 mai 2007 à 22:12
Salut:

il faut faire la conversion String -> int

Petite modification:

BufferedReader br = new BufferedReader(new FileReader(filename));
String nextLine;
int ville1, ville2, distance;

while ((nextLine = br.readLine()) != null) {
     String[] temp = nextLine.split(" ");
     try {
         ville1 = Integer.parseInt (temp[0]);
         ville2 =
Integer.parseInt (
temp[1]);
         distance =
Integer.parseInt (
temp[2]);
     }
     catch (OutOfBoundsException e) {
         
System.err.println ("Indice plus grand que la taille du tableau: " + e.getMessage ());


     }
     catch (NumberFormatException e) {
          System.err.println ("Conversion impossible: " + e.getMessage);
     }
   }
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 39
6 mai 2007 à 22:11
Salut:

Désolé, je me suis trompé il faut faire une petite correction:
(c'est belle est bien l'exception IndexOutOfBoundsException)


BufferedReader br = new BufferedReader(new FileReader(filename));
String nextLine;
int ville1, ville2, distance;

while ((nextLine = br.readLine()) != null) {
     String[] temp = nextLine.split(" ");
     try {
         ville1 = Integer.parseInt (temp[0]);
         ville2 =
Integer.parseInt (
temp[1]);
         distance =
Integer.parseInt (
temp[2]);
         //
         // Travailler avec tes données, ici
         //
     }
     catch (IndexOutOfBoundsException e) {
         
System.err.println ("Indice plus grand que la taille du tableau: " + e.getMessage ());

                           //
                         // Si tu veux tu peux quitter le programme à cause de cette exception
           // System.exit (1);
           //
     }
     catch (NumberFormatException e) {
          System.err.println ("Conversion impossible: " + e.getMessage);
          //
          // Si tu veux tu peux quitter le programme à cause de cette exception

          // System.exit (1);
          //
     }
   }
0

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

Posez votre question
anouarch Messages postés 4 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 7 mai 2007
7 mai 2007 à 10:00
Salut,
        Avec la nouvelle correction, le premier catch est impecable, juste un petit souci au niveau du 2ème catch, le "e.getMessage" contient une erreur et le main veut pas compiler.

  catch (NumberFormatException e) {
                  System.err.println ("Conversion impossible: " + e.getMessage);
             }
        
0
emmatopiak Messages postés 149 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 17 mai 2007 2
7 mai 2007 à 13:44
Salut,

Anouarch, je comprend pas ce que tu veux faire quand tu dis que tu plottes tes distances (c'est sur le lien)
 Tu veux afficher un graphe des villes en connaissant que leur distances relatives ? c'est plutôt difficile de faire ça.

Il faudrait faire de la triangulation, car il te faut au moins 3 villes pour déterminer la position de la 4ème enfin tu peux faire mais si c'est ça que tu veux...
Fin bref dis exactement ce que tu veux faire

Une autruche ne se cuit pas aux petits lardons.
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 39
7 mai 2007 à 13:56
BufferedReader br = new BufferedReader(new FileReader(filename));
String nextLine;
int ville1, ville2, distance;

while ((nextLine = br.readLine()) != null) {
     String[] temp = nextLine.split(" ");
     try {
         ville1 = Integer.parseInt (temp[0]);
         ville2 =
Integer.parseInt (
temp[1]);
         distance =
Integer.parseInt (
temp[2]);
         //
         // Travailler avec tes données, ici
         //
     }


     catch (NumberFormatException e) {
          System.err.println ("Conversion impossible: " + e.getMessage ());
          //
         

// Si tu veux tu peux quitter le programme à cause de cette exception
          // System.exit (1);
          //



     }
   }
0
Utilisateur anonyme
7 mai 2007 à 14:19
Il n'existe aucune possiblité pour traiter ton problème : y compris la triangulation.

Ce genre de problème impose de solide connaissance en math ainsi que des algorithmes de minimisations.

la technique consiste à prendre au minimum 4 villes et à tracer des cercles dont le rayon est celui des distances des villes par rapport à une ville de référence sur les 4. Ensuite on déplace ces villes sur ces cercles afin que les distances relatives des 3 villes restantes soient vérifiées.

C'est presque comme faire de la mécanique moléculaire mais en bcp plus dur.

Reponse ton problème et passe par des coordonnées relatives : ca sera plus simple.
0
anouarch Messages postés 4 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 7 mai 2007
7 mai 2007 à 15:03
[auteurdetail.aspx?ID=1018277 emmatopiak]
 
et [auteurdetail.aspx?ID=560094 Francky23012301], vous avez raison, j'ai pu avoir les coordonnées des villes via MATLAB, je les ai changer sous la forme suivante:

1: 112, 79
4: 188, 67
2: 253, 102
5: 125, 163
3: 209, 213
6: 295, 207
7: 344, 109
8: 294, 50
0
Rejoignez-nous