私は宿題を割り当てていますが、私は完全に立ち往生しています(レベル:初心者)。配列のポイントから3つの最も近い座標を見つける方法Java
私はユーザーのエントリから3つの最も近い距離と配列のすべての点を見つける方法を作成する必要があります - そして、私はここで立ち往生しています。
方法がある: パブリックstatic int型[] troisPlusProches(int型のx、int型のY、[] coordonneesHabitationsをINT)INT x、yをINTはユーザー・エントリであり、そして配列INT [] coordonneesHabitations []はcoordonneesHabitations intで = {9,30,18,8,3,18,25,36}。 ポイントは(9,30)、(18,8)、(3,18)、(25,36)です。
距離を計算するためにdistance = Math.sqrt(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2)))という式を使用しました。
そして、私はユーザーのエントリから3つの最短距離を見つけて、それらの位置を新しい配列に戻さなければなりません。
したがって、ユーザーエントリがx = 10、y = 15の場合。
ポイント(3,18)からの最短距離は7.616であり、次のポイントはポイント(18,8)から10.630であり、3番目のポイントはポイント(9,30)から15.033です。 この場合、メソッドは配列int [] troisPlusProches = {3、18、18、8、9、30}を返す必要があります。
私はちょうど
はここで多くの間違った試みの一つだか...把握することはできません、私は何をすべきか知っている:私はフランス語を話すので、私はありません
public static int[] troisPlusProches (int x, int y, int[] (coordonneesHabitations)
{
int [] that = Arrays.copyOf(coordonneesHabitations, coordonneesHabitations.length);
int table[] = new int[6];
double distanceA = 0.0;
double minDistance = Float.MAX_VALUE;
int a = 0;
int b = 0;
int i = 0;
double ignore = Float.MAX_VALUE;
double ignore2 = Float.MAX_VALUE;
for (i = 0; i < that.length; i += 2) {
a = that[i];
b = that[i+1];
distanceA = calculerDistance(a, b, x, y);
if (distanceA < minDistance) {
minDistance = distanceA;
table[0] = a;
table[1] = b;
}
}
ignore = minDistance;
for (i = 0; i < that.length; i += 2) {
a = that[i];
b = that[i+1];
distanceA = calculerDistance(a, b, x, y);
if (distanceA == ignore) {
continue;
}
if (distanceA < minDistance) {
minDistance = distanceA;
table[2] = a;
table[3] = b;
}
}
ignore2 = minDistance;
for (i = 0; i < that.length; i += 2) {
a = that[i];
b = that[i+1];
distanceA = calculerDistance(a, b, x, y);
if ((distanceA == ignore) || (distanceA == ignore2)) {
continue;
}
if (distanceA < minDistance) {
minDistance = distanceA;
table[2] = a;
table[3] = b;
}
}
return table;
}
:私の第三タスクはメソッドを作成して、ユーザーエントリおよびすべてのポイントから3つの最も近い距離を見つけることです配列で - そして、私はここで2日間ここで立ち往生しています。これが宿題割り当ての良いアドバイスであるとすれば、それを強引にコード化し、後で最適化することです。だから、ユーザーのエントリを各他のすべてのポイントまでの距離を見つけるし、並べ替え、3を最小限に取る。 – mba12
私は次の答えに行ったことを投稿します。それはずっとずっとずっとやっていました。しかし、私は2番目と3番目の距離の結果を得ていません。私は1つのループに入れようとしましたが、私は3つの別々のループを試しました(下の例のように)。ループ内でループしようとしましたが、まだ結果はありません; – Frenchie
2番目と3番目のポイントを探す前に 'minDistance'を' Float.MAX_VALUE'にリセットする必要があります。そうでなければ、 – nhouser9