Guerllain
Messages postés10Date d'inscriptionlundi 1 juin 2015StatutMembreDernière intervention18 avril 2016
-
Modifié par KX le 3/04/2016 à 00:30
Guerllain
Messages postés10Date d'inscriptionlundi 1 juin 2015StatutMembreDernière intervention18 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:
Distance entre deux points
Distance entre deux points java - Meilleures réponses
KX
Messages postés16668Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention17 mars 2023125 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