Создание java l oop с одной переменной go до 99, в то время как другая переменная уменьшается до 0 - PullRequest
0 голосов
/ 01 мая 2020

Трудно объяснить, извините заранее. Я пытаюсь добавить расстояния между 99 различными переменными. Я помещаю их все в хэш-карту. Я думал, что лучший способ сделать это будет (1, 2, расстояние), а затем (1,3, расстояние) и так далее, пока я не нанес на карту расстояние между всеми 99 из них. Таким образом, одна переменная имеет значение от go до 98, а другая - от go до 99, а затем до 98 и т. Д. c. Я понятия не имею, как это сделать. Я пытался сделать вложенный для l oop, но это не сработало.

    for (int i=0; i<99; i++)
{
    for (int j=99; j>0; i--)
    {
        graphWeighted.addEdge(nodelist.get(i), nodelist.get(j), distances.get(i));
    }
}

Ответы [ 2 ]

2 голосов
/ 01 мая 2020

Я думаю, вы хотите:

for (int i=0; i < 99; i++) {
    for (int j=i+1; j < 100; j++) {
        graphWeighted.addEdge(nodelist.get(i), nodelist.get(j), distances.get(i));
    }
}

Вышеприведенный l-1006 * с двойным вложением будет генерировать пары, включающие:

(0, 1)
(0, 2)
...
(0, 99)
(1, 2)
(1, 3)
...
(1, 99)
...
(98, 99)
0 голосов
/ 01 мая 2020

Если вам нужно найти расстояние между двумя векторными элементами, вам нужно использовать любой из алгоритмов расстояния Manhatten или Euclidean. Возможно, вам придется использовать стороннюю стороннюю библиотеку для выполнения таких операций. Библиотека

Apache commons содержит пакет org.apache.commons.math3.ml.distance и классы для выполнения норм L1 и L2 на векторах.

Пожалуйста, проверьте документацию здесь

...