Я пытаюсь сделать программу на java, которая находит наибольшую длину между любой парой координат во всем наборе путем сравнения.
Я полагаю, что моя проблема заключается не столько в поиске максимальной длины, сколько в создании всех возможных пар. Я действительно не понимаю, что я должен использовать для координат x и y в данном уравнении. Как мне получить координаты от каждой пары и сравнить их? Я читал повторяющиеся решения, но я новичок в программировании и не мог их понять.
Это часть моего кода, которая у меня есть до сих пор, которая имеет отношение к этой проблеме:
public static void main (String[] args) {
int[][] countries = {{-34,-7},{76,-23},{-5,-20},{-56,64},{12,56}};
double maxDistance = 0;
for(int i = 0; i < countries.length-1; ++i) {
for(int j = i; j < countries.length; ++j) {
double distance = Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
Буду признателен за любую помощь или даже толчок в правильном направлении.
Я не понимаю, как мне определить переменные x/y, потому что я просто вытаскиваю координаты из массива стран, поэтому я думал, что они уже определены? Я думал, что будет способ сравнить индексы или что-то в уравнении.
СПАСИБО БОЛЬШОЕ ВАМ ОБОИМ!




начните свой j после i, потому что вы уже сравнили предыдущие индексы с остальной частью массива. И вы определили свои переменные x1, x2, y1, y2?
Это должно помочь:
int[][] countries = {{-34,-7},{76,-23},{-5,-20},{-56,64},{12,56}};
double maxDistance = 0;
for(int i = 0; i < countries.length-1; ++i) {
for(int j = i+1; j < countries.length; ++j) { //do not create zero distance or duplicate pairings
//get your x1, x2, y1, y2 from countries[i] and countries[j]
double distance = Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
//compare with maxDistance
//assign maxDistance if you find it greater than previous one and record the coordinates which produced this distance
}
}
Оставляйте комментарии, если что-то непонятно или я что-то пропустил ;)
Я немного изменяю ваш код
int[][] countries = { { -34, -7 }, { 76, -23 }, { -5, -20 }, { -56, 64 }, { 12, 56 } };
double maxDistance = 0;
for (int i = 0; i < countries.length - 1; ++i) {
int x1 = countries[i][0];
int y1 = countries[i][1];
for (int j = i; j < countries.length; ++j) { // first j will be i
int x2 = countries[j][0];
int y2 = countries[j][1];
double distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
maxDistance = maxDistance < distance ? distance : maxDistance;
}
}
System.out.println(maxDistance);
Вывод
158.09174551506476
обратите внимание, как я зацикливаю i и j, и как я определяю x1, x2, y1, y2
начните j с i, т.е. for(int j=i; j<countries.length; ++j).. потому что вы уже сравнили предыдущие индексы с остальной частью массива. И вы определили свои переменные x1, x2, y1, y2?