Calcule de distance avec JAVA

Messages postés
10
Date d'inscription
lundi 1 juin 2015
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 

Votre réponse

2 réponses

Messages postés
15867
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
15 décembre 2018
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
Dernière intervention
18 avril 2016
0
Merci
Merci pour votre reponse elle m'a bien servie :)
Commenter la réponse de Guerllain

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.