Calcule de distance avec JAVA

Guerllain Messages postés 9 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 18 avril 2016 - Modifié par KX le 3/04/2016 à 00:30
Guerllain Messages postés 9 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 18 avril 2016 - 4 avril 2016 à 13:27
Bonjour,
J'ai un probleme dans mon script qui va me servir a dresser les distances entre deux points (x1,y1) et (x2,y2) etc
merci de m'aider a trouver l'erreur
for (i=1;i<51;i++){
  q="select x,y from client where id_client='"+i+"';";
  for(j=1;j<51;j++){ 
  r=s3.executeQuery(q);
 
  while (r.next()){ 
  
  
   q1="select x,y from client where id_client='"+j+"';";
   
         r1=s4.executeQuery(q1);
         
        while (r1.next()){
         x1=r1.getDouble(1);
         y1=r1.getDouble(2);
          x=r.getDouble(1);
          y=r.getDouble(2);
      d=Math.sqrt(Math.pow((x-x1),2)+Math.pow((y-y1),2));        
        
   
   q2="INSERT into vecteur (`id_vecteur`, `id_client1`, `id_client2`, `distance`) values ('"+a+"','"+i+"','"+j+"','"+d+"');";
   s4.executeUpdate(q2);}}
        a++;
     
  }
       
        }



}
A voir également:

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
3 avril 2016 à 00:57
Bonjour,

Je ne comprends pas tes imbrications :
for (i=1;i<51;i++){
    q="select x,y from client where id_client='"+i+"';";
    for(j=1;j<51;j++){ 
        r=s3.executeQuery(q);
        while (r.next()){ 
            q1="select x,y from client where id_client='"+j+"';";
            r1=s4.executeQuery(q1);

Pourquoi tu veux faire 50 fois la requête q dans la boucle j alors qu'elle ne dépend que de i ? Idem, pourquoi faire la requête q1 à chaque boucle r.next alors qu'elle ne dépend que de j ?

Je pense que tu pourrais nettement simplifier ton programme Java si ta requête SQL était un peu plus riche.

À tester :

SELECT c1.id_client, c1.x, c1.y, c2.id_client, c2.x, c2.y,
    SQRT(POW(c1.x - c2.x), 2) + POW(c1.y - c2.y), 2)) AS distance
FROM client c1, client c2
WHERE c1.id_client BETWEEN 1 AND 50
  AND c2.id_client BETWEEN 1 AND 50
0
Guerllain Messages postés 9 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 18 avril 2016
4 avril 2016 à 13:27
Merci pour votre reponse elle m'a bien servie :)
0
Rejoignez-nous