Calcule de distance avec JAVA

Messages postés
10
Date d'inscription
lundi 1 juin 2015
Statut
Membre
Dernière intervention
18 avril 2016
-
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++;
     
  }
       
        }



}
Afficher la suite 

2 réponses

Messages postés
15998
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
15 juin 2019
85
0
Merci
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
Commenter la réponse de KX
Messages postés
10
Date d'inscription
lundi 1 juin 2015
Statut
Membre
Dernière intervention
18 avril 2016
0
Merci
Merci pour votre reponse elle m'a bien servie :)
Commenter la réponse de Guerllain